Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在单个提供程序中为多个状态对象实现React useReducer_Javascript_Reactjs_React Hooks_Use Reducer - Fatal编程技术网

Javascript 如何在单个提供程序中为多个状态对象实现React useReducer

Javascript 如何在单个提供程序中为多个状态对象实现React useReducer,javascript,reactjs,react-hooks,use-reducer,Javascript,Reactjs,React Hooks,Use Reducer,我们在一个提供程序中有三个相关但独立的巨大状态对象,不确定哪种方式更好地实现useReducer 我们正在迁移使用UpReRever,很难将它们全部粘贴到一个初始状态。 const initialStateA = { ... } const initialStateB = { ... } const initialStateC = { ... } 选项1:一个单一的“mainReducer”来管理一切 const mainReducer = ({reducerA, reduce

我们在一个提供程序中有三个相关但独立的巨大状态对象,不确定哪种方式更好地实现useReducer

我们正在迁移使用UpReRever,很难将它们全部粘贴到一个初始状态。

const initialStateA = {
  ...
}

const initialStateB = {
  ...
}

const initialStateC = {
  ...
}
选项1:一个单一的“mainReducer”来管理一切

const mainReducer = ({reducerA, reducerB, reducerC}, action) => {
  // reducerA + reducerB + reducerC....
}

const [state, dispatch] = useReducer(mainReducer, {...initialStateA, ...initialStateB, ...initialStateC})
选项2:有三个单独的用户教育者

const [stateA, dispatchA] = useReducer(reducerA, initialStateA)
const [stateB, dispatchB] = useReducer(reducerB, initialStateB)
const [stateC, dispatchC] = useReducer(reducerC, initialStateC)

哪种方法更好?每一个的优点/缺点是什么,或者两者之间几乎没有区别?

如果这三个巨大的状态对象彼此不通信,并且每一个都将在不同的子应用程序中使用,我会按照