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

为什么调用一个setState会更新另一个完全独立的React state状态值?

问题根源

Array.prototype.sort() 是原地排序方法,会直接修改调用它的原数组,而非返回新的排序后数组。

你的代码中排序逻辑的执行顺序是:

  1. 先执行 unsortedData.sort(),直接修改了 unsortedData 对应的原数组(也就是你存储原始顺序的state)
  2. 才对已经排序后的数组做展开操作,赋值给 displayedData

这就是为什么两个独立state看起来出现了关联:你在给 displayedData 赋值前,就已经主动修改了 unsortedData 的值。

修复方案

调整排序的执行顺序,先拷贝原数组,再对拷贝出来的新数组执行排序,不要触碰存储原始顺序的unsortedData:
把原有排序逻辑

setDisplayedData([...unsortedData.sort()])

修改为:

setDisplayedData([...unsortedData].sort())

调整后逻辑变为:

  1. 先展开 unsortedData 得到一个全新的独立数组
  2. 对这个新数组执行排序,完全不会影响到原unsortedData的内容
  3. 排序后的新数组赋值给 displayedData,原始数据顺序得到保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:15:05