在我的 React 应用程序中,我有一个parameters在 state 中调用的对象,它代表一棵树。
这是我的parameters对象:
{
"Access_List": {
"state": "override",
"value": {
"88": {
"state": "inherit",
"value": [{
"ip": {
"state": "inherit",
"value": "19.1.1.1"
},
"mask": {
"state": "override",
"value": "0.0.0.0"
}
}]
}
}
}
}
我想要一种通用的方法来更新树下的任何叶子值。我怎样才能做到这一点?例如,我想更新ip.
我知道我可以递归地遍历parameters对象并给每个节点一个表示其在树中路径的键。例如,ip将是
"ip":{
"state":"inherit",
"value":"19.1.1.1",
"key":"Access_List.value.88.value.0.ip"
}
然后我可以使用 lodashdeepClone函数对状态进行深度复制,然后使用 lodash 改变 ip 的值,set如下所示:
set(parameters, `${key}.value`, NEW_VALUE)
最后设置新状态。
这种方式将导致我所有的孩子重新渲染。如何在知道对象路径的情况下不可变地更新状态。