将useState推送到redux工具包后,将报告setState错误Uncatched TypeError:无法指派给对象'#'的只读属性'name'
第一个
点击提交后,点击ChangeName后出错,点击提交前没有错误
错误:未捕获TypeError:无法指派给对象'#'的只读属性'name'
我尝试修改setState和changeNameArr的写入方法,但它们不起作用或报告错误
第一次
刚进入页面时可以正常执行此方法,但保存数据到Redux工具包后,无法再次执行此方法
我希望你能帮我解决这个问题
1条答案
按热度按时间jei2mxaa1#
Redux状态和React状态都应始终作为只读状态处理-您应始终创建带有更改的副本,而不要更改原始状态。
您的代码在这里,
不会建立
arr
的复本。它创建了一个新的变量
temp
,指向arr
。不管你是否执行temp.push
和arr.push
,你都改变了。通常情况下,这种情况不会出现(直到后来它变成一个非常微妙的bug),但由于您将相同的引用放入Redux(Redux会采取措施防止意外突变),您现在注意到了它-该更改不仅会更改
temp
和arr
,还会更改Redux的状态。因此,实际上,您必须创建一个新副本,而不是仅推送:
或