在 redux 中在哪里调度多个动作?

新手上路,请多包涵

我将 redux 与 connectredux-thunk 中间件和容器一起使用。

目前,当用户执行一个动作时,例如单击一个按钮,我需要分派该动作(同步),这将分派其他几个动作(异步)。

我知道从 reducer 内部调度动作是一种反模式。

我想知道这段代码适合放在什么地方。

目前我不确定它是否应该留在:

  • 动作创造者。
  • 在使用 store.subscribe 的容器中。

原文由 Radex 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 532
2 个回答

根据 文档 推荐的方法是在动作创建者中,如下所示:

 function actionCreator(payload) {
    return dispatch => {
        dispatch(action1(payload))
        dispatch(action2(payload))
    }
}

然后,您可能希望将动作创建者作为 prop 附加,并使用 mapDispatchToProps 将其传递给容器,就像 此处 提到的示例一样。所以它看起来像这样:

 const mapDispatchToProps = dispatch => ({
   action1: some_payload => dispatch(action1(some_payload))
   action2: some_payload => dispatch(action2(some_payload))
})

// your component
export default connect(mapStateToProps, mapDispatchToProps)(YourApp)


原文由 Mμ. 发布,翻译遵循 CC BY-SA 4.0 许可协议

正如其他人指出的那样 The action creator 是调度多个动作的正确位置。

下面的示例说明了 action1 如何在您的 action creator 中调度其他操作。

 const action1 = id => {
  return dispatch => {
    dispatch(action2(id))
    dispatch(action3(id))
  }
}

原文由 GibboK 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题