You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React-Redux中reducer使用++/--运算符无法更新state问题

Redux中使用++/--运算符不更新状态的原因
  • 后置自增/自减运算符的返回值特性:后置++/--运算符的执行逻辑是先返回变量当前的原始值,再对变量本身做加1/减1修改。你在代码中写counter: state.counter++时,实际赋值给新对象counter属性的是修改前的旧值,后续才会修改原state对象的counter属性。
  • 违反Redux Reducer的核心规则:Redux要求Reducer必须是纯函数,不能直接修改传入的原有state对象,必须返回一个全新的状态对象。使用state.counter++/state.counter--的写法首先直接修改了原state,不符合不可变原则,其次返回的新状态对象里counter属性还是旧值,Redux做状态对比时会认为状态没有发生变化,因此不会触发视图更新。
  • 你原本使用state.counter + 1/state.counter - 1的写法是标准正确写法:这种写法仅基于原state的counter值计算得到新数值,不会修改原state的任何属性,返回的新对象里存储的是计算后的新值,完全符合Redux的要求,因此可以正常触发状态更新。

注意:即使换成前置++state.counter的写法可以拿到新值,也不推荐这么写,因为该操作依然会直接修改原state对象,违反Redux的不可变原则,可能引发其他不可预期的问题。

内容的提问来源于stack exchange,提问作者Lorenzo Case Del Rosario

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:12:04