React Redux问题:为何控制台打印的noOfIceCream值为NaN?
排查Redux iceCreamReducer中noOfIceCream出现NaN的问题
优先检查default分支的返回逻辑
你当前代码的default分支返回的是{ state },这会把原state嵌套进一个新对象里。第一次触发default后,state结构会变成{ state: { noOfIceCream: 100 } },后续触发ICE_CREAM_BUY时,state.noOfIceCream就会是undefined,执行undefined - 1自然得到NaN。正确写法应该直接返回原state:default: return state验证初始state的有效性
在reducer函数开头添加console.log('Current state:', state),确认首次初始化时state是否是预期的{ noOfIceCream: 100 },排查是否有其他逻辑覆盖了初始state。检查action触发流程
确认触发ICE_CREAM_BUY的代码没有错误,比如有没有误传参数导致state分支被篡改,或者是否有其他reducer意外修改了该state节点。排查是否存在直接修改state的操作
Redux要求state必须通过返回新对象更新,不能直接修改原state。如果应用中有代码直接修改state.noOfIceCream的值,可能导致其变成非数字类型,最终引发NaN。
内容的提问来源于stack exchange,提问作者Pawan Kumar
相关产品推荐
相关产品推荐

