xer*_*ant 5 reactjs redux redux-thunk react-redux
我正在使用 redux 和 react-native 构建一个应用程序。
我对我使用的模式很好奇。我没有遇到任何缺点,但是我没有在任何教程中看到它,这让我想知道为什么没有人这样做。
而不是将动作创建者作为连接函数中的道具传递,例如
connect(mapStateToProps,{ func1, func2 })(Component);
Run Code Online (Sandbox Code Playgroud)
我将应用程序商店导入到模块内部,我首先在其中声明了函数:
import { AppStore } from '../App';
const actionCreator = () => {
doSomethng();
appStore.dispatch({ type: 'Action' });
};
Run Code Online (Sandbox Code Playgroud)
对我来说,这使得执行异步操作变得更容易,因为我不需要中间件:
import { AppStore } from '../App';
const actionCreator = async () => {
await doSomethng();
appStore.dispatch({ type: 'Action' });
};
Run Code Online (Sandbox Code Playgroud)
我这样做是因为 js-lint 错误'no-shadow'。它让我意识到,为了使用它,我必须在组件文件中导入动作创建者,然后将其作为 prop 传递给 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)
Run Code Online (Sandbox Code Playgroud)
在我的版本中,我只导入一次,但不将其传递给连接。这消除了影子名称的需要。
import { actionCreator1, actionCreator2 } from './actionCreators';
const myComponent = (props) => {
return (
<Button onPress={actionCreator1} />
);
};
export default connect({})(myComponent)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1453 次 |
| 最近记录: |