我是Redux的初学者,我想将其用于异步逻辑。Redux风格指南建议使用redux-thunk
,但如果我以以下方式使用Redux,我似乎不需要它:
class Actions {
constructor(dispatch) {
this.dispatch = dispatch;
}
someSyncAction1(data) {
this.dispatch({
type: SOME_SYNC_ACTION1,
payload: data,
})
}
someSyncAction2(data) {
this.dispatch({
type: SOME_SYNC_ACTION2,
payload: data,
})
}
async someAsyncAction(data1, data2) {
this.someSyncAction1(data1);
await somethingAsync();
this.someSyncAction2(data2);
}
}
// then in my react component:
function MyComponent() {
const dispatch = useDispatch();
const actions = new Actions(dispatch);
//...
return <div onClick={() => actions.someAsyncAction(1, 2)}></div>;
}
这似乎是一个简单的方法,但我担心它是否会导致错误。请帮我弄清楚是哪里出了问题。
这与Hooks文档中引用的useActions
钩子没有太大的不同-至少对于同步内容而言。
在异步的东西,你失去的功能虽然:坦克可以在任何给定的时间通过调用getState
访问当前状态。
而且,这可能更重要:thks不仅是推荐的,而且是几乎每个redux开发人员都知道的模式。所以他们看了你的代码就可以马上开始工作了。另一方面,你的模式还没有建立起来,所以如果别人接管了你的代码,这将导致冲突——没有任何真正的好处。