我正在尝试使用数组中的值更改状态。例子:const [state, setState] = useState({});const test = [1, 2, 3]; test.map((item, i) => { setState({ ...state, [`item-${i}`]: item }); });目前的状态是:item-2: 3我想要实现的是:item-0: 1,item-1: 2,item-2: 3我尝试了几种方法(看起来都相似),但效果是一样的:/有谁知道如何解决它?
2 回答

慕姐8265434
TA贡献1813条经验 获得超2个赞
您可以使用forEach()以下方法更新状态:
test.forEach((item, i) => {
setState(state => ({...state, [`item-${i}`]: item}));
});

蛊毒传说
TA贡献1895条经验 获得超3个赞
您可以使用 set state 的功能版本和 reduce 来完成此操作:
setState(prevState => {
return test.reduce((acc, next, i) => {
return {
...acc,
[`item-${i}`]: next
},
}, prevState);
});
这样做的好处是可以在一次调用中完成,并且更容易阅读。
添加回答
举报
0/150
提交
取消