gpt4 book ai didi

reactjs - 为什么不直接从 Action Creator Redux 调度到 store 呢?

转载 作者:行者123 更新时间:2023-12-03 14:26:26 24 4
gpt4 key购买 nike

我正在使用 redux 和 react-native 构建一个应用程序。

我对我使用的模式很好奇。我没有遇到任何缺点,但我没有在任何教程中看到它,这让我想知道为什么没有人这样做。

而不是像

这样在 connect 函数中将 Action 创建者作为 props 传递
 connect(mapStateToProps,{ func1, func2 })(Component);

我将应用程序商店导入到我首先声明函数的模块中:

import { AppStore } from '../App';
const actionCreator = () => {
doSomethng();
appStore.dispatch({ type: 'Action' });
};

这对我来说可以更轻松地执行异步操作,因为我不需要中间件:

import { AppStore } from '../App';
const actionCreator = async () => {
await doSomethng();
appStore.dispatch({ type: 'Action' });
};

我这样做是因为 js-lint 错误'no-shadow'。它让我意识到,为了使用它,我必须在组件文件中导入 Action 创建者,然后将其作为 prop 传递给 connect 函数,以便 Action 创建者能够访问调度。

import { actionCreator1, actionCreator2 } from './actionCreators';

const myComponent = (props) => {
const { actionCreator1, actionCreator2 } = props; //shadowed names
return (
<Button onPress={actionCreator1} />
);
};

export default connect({}, { actionCreator1, actionCreator2 })(myComponent)

在我的版本中,我只导入一次,但不将其传递给连接。这消除了隐藏名称的需要。

import { actionCreator1, actionCreator2 } from './actionCreators';

const myComponent = (props) => {
return (
<Button onPress={actionCreator1} />
);
};

export default connect({})(myComponent)

最佳答案

我喜欢你尝试为你的具体问题找到自己的解决方案。这是工程师的标志,只是在这种情况下这不是解决方案。

我认为 Redux 如何教你做事的想法并不是为了被经典化。您可以在 Prop 上放置调度程序,因为它允许事物透明,这意味着事物被绑定(bind)在您的类之外并注入(inject)。您通过在其他一些文件中直接引用它来隐藏您的存储依赖项。您的应用程序在工作流程方面的工作方式不再那么明显。另一个 react 开发人员会感到困惑,我认为这是主要的缺点。

如果您对这些方面感到满意,那么您所做的事情就很好。很好,它完成了工作,但不是“很好”,因为它包含像 Single Responsibility Principle 这样的概念。

关于reactjs - 为什么不直接从 Action Creator Redux 调度到 store 呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52434164/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com