我正在使用React钩子useReducer
来管理类似购物车的应用程序的状态。我的cartReducer
用于处理商品的添加/删除/更改数量:
// utils/reducers.js
export const cartReducer = (state, action) => {
switch (action.type) {
case ACTIONS_TYPES.ADD_ITEM: {
// ...
}
case ACTIONS_TYPES.REMOVE_ITEM: {
// ...
case ACTIONS_TYPES.EMPTY_CART: {
// ...
}
case ACTIONS_TYPES.CHANGE_ITEM_QTY: {
// ...
}
default: {
throw new Error('Unrecognized action in cartReducer.');
}
}
};
Reducer cartReducer
用于我的购物车组件中:
const [cart, dispatch] = useReducer(cartReducer, { items: [] });
现在,我想使用首选库添加通知,但我不知道如何处理。我想我有3种选择:
showSuccessToast()
之类的函数; ACTIONS_TYPES.SHOW_SUCCESS_TOAST
之类的新动作,但这需要我更改所有dispatch()
调用; cartNotificationReducer
,添加类似showSuccessToast()
的功能我知道某些选项可能是反模式,因此我认为选项3最好。但是useReducer
仅接受一个减速器...如何将它们组合在一起?