首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么不从动作创建者redux直接分派到商店呢?

为什么不从动作创建者redux直接分派到商店呢?
EN

Stack Overflow用户
提问于 2018-09-20 22:24:37
回答 1查看 1.4K关注 0票数 5

我正在构建一个应用程序,使用redux和react原生的。

我对我所用的图案很好奇。我没有遇到任何缺点,但我没有在任何教程中看到它,这让我奇怪为什么没有人这样做。

而不是将动作创建者作为连接函数中的道具传递,如

代码语言:javascript
复制
 connect(mapStateToProps,{ func1, func2 })(Component);

我在模块中导入了应用程序商店,首先声明了这些函数:

代码语言:javascript
复制
import { AppStore } from '../App';
const actionCreator = () => {
   doSomethng();
   appStore.dispatch({ type: 'Action' });
};

对我来说,这使得异步操作更容易,因为我不需要中间件:

代码语言:javascript
复制
import { AppStore } from '../App';
const actionCreator = async () => {
   await doSomethng();
   appStore.dispatch({ type: 'Action' });
};

我这么做是因为js-lint错误'no-shadow'。它让我意识到,为了使用它,我必须在组件文件中导入动作创建者,然后将它作为一个支柱传递给connect函数,以便操作创建者能够访问分派。

代码语言:javascript
复制
import { actionCreator1, actionCreator2 } from './actionCreators';

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

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

在我的版本中,我只导入一次,但不传递它来连接。这样就不需要隐藏名字了。

代码语言:javascript
复制
import { actionCreator1, actionCreator2 } from './actionCreators';

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

export default connect({})(myComponent)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-21 05:27:26

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

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

如果你对这些方面都满意,你所做的一切都是好的。就像在里面一样,它完成了任务,但不是“好的”,因为它包含了像单一责任原则这样的概念。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52434164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档