致电
store.dispatch(...)
我们可以像(1)这样使用它:
store.dispatch(dispatch => {
dispatch(someOtherAction())
});
或者我们可以像(2)这样使用它:
store.dispatch({type: constants.X})
第一个问题:要调度的两个不同类型的参数分别是什么? 第二个问题:调用(1)与调用(2)有什么区别?
答案 0 :(得分:0)
在(1)中,您正在调度“ thunk”。在(2)中,您正在调度“动作”。另外,在(1)中,someOtherAction
是“动作创建者”。您需要某种其他的中间件(例如redux-thunk
)来分派thunk。
通常,您的目标是分发动作,但是如果您需要异步分发动作(例如,在API调用之后),则可以使用thunk来异步分发动作。例如:
store.dispatch(dispatch => {
fetch('api/user')
.then(res => res.json())
.then(user => {
dispatch(loadUser(user))
})
});
在此示例中,我们利用thunk概念,仅在从某个API加载用户之后才调度用户加载操作。