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

如何简化Redux的reducer函数?简单reducer的合理长度是多少?

Reducer 简化方案

方案1:保留原有状态结构,压缩冗余代码

原有代码的冗余点在于单独声明newState再赋值,可直接返回合并后的新对象,搭配三元运算符可将整个reducer简化为表达式形式:

const Style = (state = {current: true}, action) => 
  action.type === "toggleAppStyle" ? {...state, current: !state.current} : state;

方案2:简化状态结构(更推荐)

你当前的状态域仅存储单个布尔开关,不需要嵌套对象包裹,直接用布尔值作为该状态域的值即可,逻辑会更精简:

简化后的reducer

const Style = (state = true, action) => 
  action.type === "toggleAppStyle" ? !state : state;

对应业务代码同步简化

// mapStateToProps 简化
const mapStateToProps = state => ({
  Style: state.Style
})

// render 逻辑简化
render() {
  return (
    <img 
      className='icon_all' 
      id={this.props.Style ? "icon_10" : "icon_90"} 
      onClick={this.clickHandler} 
      src='/images/favicon-optimized.svg'
    />
  )
}
关于简单reducer的合适长度

reducer没有统一的长度标准,核心遵循单一职责原则即可:一个reducer只负责维护对应状态域的更新逻辑,只要逻辑清晰、可读性达标,哪怕短到1行也完全合理。

你提到的「Redux 触发单个action会执行所有reducer」是框架的正常设计,只要不匹配的action返回原state就不会引发状态变更,这类极简reducer的执行开销可以忽略不计,不需要担心性能问题。

内容的提问来源于stack exchange,提问作者howard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:45:04