如何在反应状态对象(功能组件)中附加键/值

时间:2021-02-26 15:53:25

标签: reactjs react-state

我有一个状态

const [options, setOptions] = useState({});

我想向对象附加一个键/值,同时保留我之前推送的键/值


这不起作用:

array.map((value, index) => {  // consider array has some data
    setOptions({...options, [index]: value})
});

例如,假设我已经推送了 {0: "Zero"} 下次我推送 {1: "One"} 时,它应该保留 {0: "Zero"}

2 个答案:

答案 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})