我有一组数据,只要用户单击按钮,我就想更新:
const [visualQueryData, setVisualQueryData] = useState([{
default: {
default: [{
class: '',
property: ''
}],
and: [],
or: [],
},
}]);
- 这里我只想更新默认对象中的类键 *
我做了什么:
setVisualQueryData((p) => [
...p,
(visualQueryData[0].default.default[i].class = e),
]);
我得到的输出:
[{
default: {
and: []
default: [{
class: 'shanum',
property: ''
}],
or: [],
}
},
"shanum"
]
什么是实际输出:
[{
default: {
default: [{
class: 'shanum',
property: ''
}],
and: [],
or: [],
},
}]
我不知道为什么在最后相同的数据添加了我想添加的类键?
2条答案
按热度按时间myss37ts1#
你可以使用Immer来修改状态,通过使用
produce
函数。Immer获取currentQueryState
并返回一个副本,即draft
状态,这样你就不会改变原始状态。这使得状态更新更容易读取。不要忘记安装依赖项:
wvt8vs2t2#