在某些情况下,我从API返回了数据,因此需要将这些数据安排到每个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
}
export function actionFetchData() {
const data = getDataFromApi()
dispatch({ type: someGenericAction, payload: { data })
}
我知道第一个选项更容易控制,例如,如果我需要为某个动作传递一些其他数据并在特定的reducer中处理它,该怎么办。 但是reduxjs文档说:put as much reducer logic as possible in reducers。
那令人困惑。设计商店时,哪个选项更合适?
答案 0 :(得分:1)
对于Redux Style Guide,我们这样做鼓励“在简化器中保持尽可能多的逻辑”以及modeling actions as "events", not "setters"。
在这种情况下,无需分派两个单独的动作。派发包含该API响应中所有数据的一个动作,并让每个化简器适当地对其进行处理,以更新其自身的状态。