调度功能/动作与调度{type:x}

时间:2020-02-18 00:19:23

标签: reactjs redux react-redux

致电

store.dispatch(...)

我们可以像(1)这样使用它:

store.dispatch(dispatch => {
   dispatch(someOtherAction())
});

或者我们可以像(2)这样使用它:

store.dispatch({type: constants.X})

第一个问题:要调度的两个不同类型的参数分别是什么? 第二个问题:调用(1)与调用(2)有什么区别?

1 个答案:

答案 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加载用户之后才调度用户加载操作。