在原始状态的更改副本上反应状态更改?

时间:2020-11-11 03:16:32

标签: javascript reactjs

我正在尝试使用React在紫色宫殿游戏中制作一个简单的游戏,例如紫色对。我有一个名为clickBtn的方法,它应该增加点击计数并减少第二次点击,但是我不知道为什么handleClick方法会改变chosen和{{1 }}的state属性,即使不使用clicked方法复制新状态也是如此。你能帮我解决这个问题吗?

setState

1 个答案:

答案 0 :(得分:1)

slice()只是返回数组的浅表副本,因此,如果原始对象和副本对象都是引用类型(对象),则原始对象和副本对象都引用相同的数组对象。

对于对象切片,将对象引用复制到新数组中。这俩 原数组和新数组引用相同的对象。如果对象发生变化, 这些更改对于新阵列和原始阵列都是可见的。

尝试深度复制对象。您可以使用JSON.parse(JSON.stringify(arr))

轻松进行深度复制

您还可以尝试lodash的{​​{1}}方法。

有关深度克隆的更多详细信息-https://stackoverflow.com/a/122704/11306028