【发布时间】:2019-09-01 08:59:31
【问题描述】:
我有一个没有 redux 的应用程序,我用钩子和钩子 useReducer + 上下文处理全局状态。我有 1 个 useReducer,它就像一个 Redux 商店。但要做到这一点,我只能发送 1 个减速器。在那个减速器中,我拥有所有状态的逻辑,但我想在其他减速器中分离该减速器的一些功能。在 redux 中有 combineReducer 可以做到这一点。但是有了钩子+上下文,我该怎么做呢?如何在useReducer中组合多个reducer发送给我的Global Provider?
//Global Provider
const [state, dispatch] = useReducer(reducer, {
isAuthenticated: null,
user: {},
catSelect: 10,
productsCart,
total
});
//reducer with all cases
export default function(state , action ){
switch(action.type) {
case SET_CURRENT_USER:
return etc...
case SET_CATEGORIA:
return etc...
case 'addCart':
return etc...
case etc....
default:
return state;
}
}
现在这行得通。但是reducer 包含的“case”与其他“case”做的事情完全不同。例如认证的“案例”,添加产品的“案例”,消除供应商的“案例”等。
使用 Redux,我会创建更多的 reducer(auth、shopCart、供应商等)并使用 combineReducer 来控制所有这些。
如果没有 Redux,我必须将所有内容都混合在 1 中,只需减少即可。所以我需要一个 combineReducer 来组合许多不同的减速器,或者用 Hooks + context 来做这一切的其他方式
【问题讨论】:
标签: reactjs store react-hooks reducers react-context