我在nextjs中有一个useState,它的值如下所示:
const [sampleData, setSampleData] = useState({
value1: ''
value2: ''
value3: []
});
例如,如果我想更新value1的状态,同时保留其余的状态,我会这样做:
setSampleData({...sampleData, value1: 'new value'});
这是可行的。但是,如果我想更新value3的状态,它是一个数组,并且仍然保留以前的数组内容,我该如何实现这一点?这样做会将value3数组的整个状态替换为新的数组集:
setSampleData({...sampleData, value3: [new array]});
是否可能或者我应该完全使用另一种格式,例如useReducer
hook?
3条答案
按热度按时间zpgglvta1#
您可以使用内部跨页,例如:
a64a0gku2#
现在你有一些选择来实现这一点,
选项1:
选项2:
rfbsl7qr3#
为了向setter添加额外的逻辑,您还可以将回调函数传递给状态setter(* 而不仅仅是新状态 *)
你可以参考文档来阅读更多关于它的信息,但我想这应该对你的情况起作用。
这个回调的返回值就是被设置为新状态的值