React 16表单更新操作创建新记录而不是更新记录

时间:2017-12-23 11:13:31

标签: javascript reactjs react-bootstrap-table

我已经创建了React 16表单。我已经完成了显示记录,添加记录,删除记录。当涉及记录更新时,我正在插入新记录而不是更新记录。如果我传递相同的记录值没有任何反应。我已查看'js/*.js'部分handleSubmit部分中的条件以查找更新项目,if部分已添加项目。我需要在此处进行更改吗?

else

1 个答案:

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