为每个特定的reducer调度多个动作与为多个reducer调度一个动作之间有区别吗?

时间:2020-07-23 11:31:34

标签: redux react-redux

在某些情况下,我从API返回了数据,因此需要将这些数据安排到每个reducer。有两种设计方法:

  1. С当多个动作被调度到每个特定的reducer时:
export function actionFetchData() {
  const data = getDataFromApi()

  dispatch({ type: firstReducer.someAction, payload: { data: data.someProp })
  dispatch({ type: secondReducer.someAction, payload: { data: data.anotherProp })
  // .. and so on
}
  1. 仅在分派一个通用动作且只有特定的化简器应处理这一情况时发生这种情况:
export function actionFetchData() {
  const data = getDataFromApi()
  dispatch({ type: someGenericAction, payload: { data })
}

我知道第一个选项更容易控制,例如,如果我需要为某个动作传递一些其他数据并在特定的reducer中处理它,该怎么办。 但是reduxjs文档说:put as much reducer logic as possible in reducers

那令人困惑。设计商店时,哪个选项更合适?

1 个答案:

答案 0 :(得分:1)

对于Redux Style Guide,我们这样做鼓励“在简化器中保持尽可能多的逻辑”以及modeling actions as "events", not "setters"

在这种情况下,无需分派两个单独的动作。派发包含该API响应中所有数据的一个动作,并让每个化简器适当地对其进行处理,以更新其自身的状态。