我已经创建了React 16表单。我已经完成了显示记录,添加记录,删除记录。当涉及记录更新时,我正在插入新记录而不是更新记录。如果我传递相同的记录值没有任何反应。我已查看'js/*.js'
部分handleSubmit
部分中的条件以查找更新项目,if
部分已添加项目。我需要在此处进行更改吗?
else
答案 0 :(得分:0)
我也无法发现你的错误。如果你检查这样的状态会有帮助吗?我在indexOf
上执行formdata.name
。如果状态中没有具有相同名称的项目,则索引将为-1
。
// find item in state with same name
const index = this.state.formdata.map((item) => {
return item.name;
}).indexOf(formItem.name);
if (index >= 0) {
// update item
const formdata = this.state.formdata;
formdata[index]= formItem;
this.setState({ formdata });
} else {
// insert new item
this.setState(prevState => ({
formdata: prevState.formdata.concat(formItem)
}));
}
或者,如果您想继续使用prevState以尽量减少可能出错的可能性,请更新您的状态:
// update item
this.setState(prevState => {
const {formdata} = prevState;
formdata[index] = formItem;
return { formdata }
}