我正在构建一个应用程序,使用redux和react原生的。
我对我所用的图案很好奇。我没有遇到任何缺点,但我没有在任何教程中看到它,这让我奇怪为什么没有人这样做。
而不是将动作创建者作为连接函数中的道具传递,如
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'。它让我意识到,为了使用它,我必须在组件文件中导入动作创建者,然后将它作为一个支柱传递给connect函数,以便操作创建者能够访问分派。
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)发布于 2018-09-21 05:27:26
我喜欢你试图为你的具体问题找到自己的解决方案。这是一个工程师的标志,只是在这种情况下,这不是解决方案。
我认为Redux教你如何做事的想法并不是要被认可的。您可以在道具上放置调度员,因为它允许事情是透明的,这意味着东西被绑定在类之外并注入。通过在其他文件中直接引用存储依赖项,您已经隐藏了存储依赖。您的应用程序在工作流方面的工作方式已经不那么明显了。另一个开发人员可能会感到困惑,我想这是主要的缺点。
如果你对这些方面都满意,你所做的一切都是好的。就像在里面一样,它完成了任务,但不是“好的”,因为它包含了像单一责任原则这样的概念。
https://stackoverflow.com/questions/52434164
复制相似问题