Reactjs 为什么不直接从action creator redux发送到存储中?

Reactjs 为什么不直接从action creator redux发送到存储中?,reactjs,redux,react-redux,redux-thunk,Reactjs,Redux,React Redux,Redux Thunk,我正在使用redux和react native构建一个应用程序 我对我使用的模式很好奇。我没有遇到任何缺点,但是我没有在任何教程中看到它,这让我想知道为什么没有人这么做 而不是在连接函数中将动作创建者作为道具传递,如 connect(mapStateToProps,{ func1, func2 })(Component); 我在模块内部导入了app store,我首先在其中声明了函数: import { AppStore } from '../App'; const actionCreato

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

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

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

 connect(mapStateToProps,{ func1, func2 })(Component);
我在模块内部导入了app store,我首先在其中声明了函数:

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函数,以便动作创建者能够访问dispatch

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

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

export default connect({}, { actionCreator1, actionCreator2 })(myComponent)
从“/actionCreators”导入{actionCreator1,actionCreator2};
常量myComponent=(道具)=>{
const{actionCreator1,actionCreator2}=props;//阴影名称
返回(
);
};
导出默认连接({},{actionCreator1,actionCreator2})(myComponent)
在我的版本中,我只导入一次,但不将其传递给连接。这样就不需要对名称进行阴影处理

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

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

export default connect({})(myComponent)
从“/actionCreators”导入{actionCreator1,actionCreator2};
常量myComponent=(道具)=>{
返回(
);
};
导出默认连接({})(myComponent)

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

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


如果你对这些方面都满意,那么你所做的一切都很好。与中一样好,它完成了任务,但并不“好”,因为它包含了类似于

的概念,我看到连接函数的使用是针对MapStateTops的。我同意这一点,但我不明白这与派遣有什么关系。我很难理解“潜在问题”。我似乎不能把我的大脑放在他们身上。你能帮我吗?谢谢你的回复,我知道乍一看另一个react开发者可能会感到困惑。我不明白这是怎么违反SRP的。我认为我接受了它,因为我从我的react组件中移除了责任,它们不再自己向存储发送数据,而是只接收数据。或者至少他们不关心调度操作,而只关心调用函数。Well connect已经在创建这种分离。它可能与您的类位于同一个文件中,但它不在您的类中!您正在使用您的类和connect来编写新的内容,让每个类都处理自己的问题,除了在composition根目录中首次设置存储时,您不需要了解存储。假设您想更改应用程序存储。。。。改名吧。现在,您必须更新所有操作文件,而使用传统方法,它们可以保持不变,因为您不打算直接使用存储。