用另一个对象替换数组中的对象,ReactJS
2020-02-06
1629
我想将变量中的对象推送(拼接)到数组中,但这会导致无限循环, 关键在于用 React 状态中的另一个对象替换数组中的对象。
handleDuplicate = (id, nextId) => {
let items = [...this.state.items];
let currentItem = this.state.items[id];
if (items && currentItem) {
console.log(currentItem); // --- logs object from react state properly
for (var i = 0; i < items.length; i++) {
if (items[i].id == nextId) {
items.splice(i, 1);
// items.splice(i, 0, currentItem); // --- causes infinte loop
items.splice(i, 0, { id: 111, test: "test" }); // --- runs ok
i--;
console.log(items);
} else {
console.log("---");
}
}
}
this.setState({ items });
};
1个回答
您可以使用
map
函数来替换该项目:
handleDuplicate = (id, nextId) => {
const currentItem = this.state.items[id];
const items = this.state.items.map(
item => item.id === nextId ? currentItem : item
);
this.setState(prevState => ({items});
}
Olivier Boissé
2020-02-06