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

React-Redux中合并state的写法是否符合React正确实践?

你的Redux合并状态实现符合最佳实践吗?

首先要给你点个赞——你的实现完全符合Redux和React的核心最佳实践!

为什么你的写法是正确的?

Redux要求reducer必须是纯函数:不能修改原有的state对象/数组,必须返回一个全新的状态副本。你的代码完美做到了这两点:

  1. 使用{...state}展开原state,创建了一个新的state对象,避免直接修改原state
  2. 用state.politicianList.concat(action.payload)生成新的数组——concat方法不会修改原数组,而是返回一个包含原数组元素和新payload元素的新数组

这种保持**不可变性(Immutability)**的做法是关键:它能让Redux准确检测到状态变化,进而触发相关组件的重新渲染,同时也让状态追踪、调试变得更简单。

补充几个等价的写法(可选)

如果你喜欢更简洁的语法,也可以用ES6的数组展开运算符来替代concat,效果完全一致:

return {...state, politicianList: [...state.politicianList, ...action.payload]};

两种写法都是合规的,选你觉得更易读的就行。

要避免的错误写法

这里提醒一下,绝对不要用push来修改原数组,比如:

// ❌ 错误:直接修改了原state的politicianList,违反纯函数原则
state.politicianList.push(...action.payload);
return state;

这种写法会导致Redux无法检测到状态变化,组件也不会正确更新。

总的来说,你的代码是完全正确的,继续保持就好!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:26:31