【发布时间】:2021-08-28 12:01:27
【问题描述】:
{
"user":{
"auth":true,
"sub_sq":[
"1":{
"createdAt":"2021-08-28"
}
]
},
"sub":{
"name":"123"
"sub_sq":[
"1":{
"createdAt":"2021-08-21"
}
]
}
}
你好 当像上面那样改变状态对象时
对用户对象应用更改时
-
深度复制后是否需要更改整个对象?
-
还是只在 deepcopy 后将更改应用到用户对象?
我喜欢 two(2) 方法,所以我应用第一个(仅深拷贝更改的对象)
但我不确定这是否是正确的做法,所以我正在寻求建议。
谢谢
【问题讨论】:
-
考虑使用扩展运算符
-
当您想更改嵌套对象中的某些内容时,您需要创建父对象和要更改的对象的新副本。例如,如果您想更改用户对象内部的某些内容,您需要制作
entire state的副本和user对象的新副本。它不需要在这里创建sub的副本,因为其中没有任何更改。 -
嵌套越多,更新状态就越困难,因为您需要复制所有嵌套级别。您可以使用像 immer - immerjs.github.io/immer 这样的库。