我正在使用redux
和redux-thunk
。在我的许多动作创作者中,我都使用了传递dispatch
给它的助手,我想知道这是不好的做法还是一种反模式,或者我是否可以避免dispatch
像这样绕过去。
例如,我有一个动作创建者,如下所示:
import * from "./helpers";
export const listenForMessages = () => async (dispatch) => {
helpers.updateListening(true, dispatch);
}
我里面有一个助手,helpers.js
就像这样:
export const updateListening(isListening = false, dispatch) {
// do something interesting
disptach(...);
}
我想避免不得不传递调度。感觉很难看。
而不是调用的dispatch(someAction)
中updateListening
,使其返回操作对象,而不是:
export const updateListening(isListening = false) {
// do something interesting
return { type: SOME_ACTION, payload };
}
这使得updateListening
就像任何其他动作的创造者,所以你可以派遣在调用者与行动:
export const listenForMessages = () => async (dispatch) => {
dispatch(helpers.updateListening(true)); // or `bindActionCreators`
}
如果updateListening
需要在分派之前完成异步调用,则可以返回一个promise并将await
其放入其中listenForMessages
,或者将其变成与您一样的异步动作创建者listenForMessages
,然后可以按照完全相同的方式进行分配:dispatch(helpers.updateListening(true))
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句