reactjs - 想用 useReducer 添加第二个 React reducer
问题描述
我目前有一个减速器,它首先检查是否将 SUCCESS 或 FAILURE 作为操作发送。只有当loading
状态为假时,我才希望检查其他操作。我意识到下面的代码不太正确,但只是想粘贴一些内容以了解我要解决的问题。
我觉得不知何故,之后的所有代码if (state.loading === false)
都可能在另一个减速器中,但我不知道该怎么做。我尝试了几种错误的方法,并且不断出现奇怪的错误。
const dataLoadingReducer = (state, action) => {
switch (action.type) {
case 'FAILURE':
return {...state,loading: true}
case 'SUCCESS':
return {...state, loading: false}
}
// only do the next set of dispatches if state.loading is true, otherwise ignore
if (state.loading === false) {
switch (action.type) {
case 'SET_YEAR':
return {...state, year: 'xxx'}
case 'SHOW_SESSIONS':
return {...state, year: '111'}
case 'HIDE_SESSIONS':
return {...state, year: '222'}
case 'SHOW_FAVORITES':
return {...state, year: '333'}
}
}
};
解决方案
你想要单独的减速器吗?如果是这样,请使用combineReducers
(https://redux.js.org/api/combinereducers)。
但是,当您调度一个动作时,SET_YEAR
您应该期望该动作得到一致的处理。您的减速器中不应出现次要的、错误的或有条件的行为。这可能会导致各种问题。如果由于 的值而不应发生loading
该动作,则不应首先分派该动作。Redux reducer 用于状态管理,而不是业务事件/规则的编排。
推荐阅读
- julia - 如何处理 is_power(x,y) 函数的 (x,1) 基本情况,其中 x != 1?
- asp.net - 为什么 ActionResult 方法不从视图内部的 Html.BeginForm() 中获取任何参数?
- javascript - TypeError: undefined is not an object (评估 '_this.props.navigation.openDrawer')
- c - 在c中将char数组转换为structs数组
- javascript - JS设置的CSS过渡问题
- python-3.x - 如何在绘图漏斗中再添加 1 种细分颜色?
- node.js - 我如何实现 NodeJS “你的意思是”功能?
- python - 导入 bs4 ModuleNotFoundError:没有名为“bs4”的模块
- c# - C# RSA 解密参数不正确
- python - 如何停止“Pylance 扩展程序可用”弹出窗口?