我有一个状态
const [options, setOptions] = useState({});
我想向对象附加一个键/值,同时保留我之前推送的键/值
这不起作用:
array.map((value, index) => { // consider array has some data
setOptions({...options, [index]: value})
});
例如,假设我已经推送了 {0: "Zero"} 下次我推送 {1: "One"} 时,它应该保留 {0: "Zero"}
答案 0 :(得分:0)
要执行此操作,您需要先获取旧数据并将其存储在变量中,然后进行更新,然后再次设置选项:
例如:
let tempOptions = options;
array.map((value, index) => { // consider array has some data
tempOptions[index] = value;
});
setOptions(tempOptions);
你可以用另一种方式做到这一点:
setOptions(prev => {...prev, newValue});
永远记住你正在处理状态,并且你不能直接更新状态并且要小心很多状态更新......
答案 1 :(得分:0)
尝试在新对象中添加新值,然后设置一次 setOptions。不要尝试在数组映射中设置选项。
var newOptions = {}
array.map((value, index) => { // consider array has some data
newOptions[index] = value
});
setOptions({...options, ...newOptions})