динамическое редактирование элементов массива - PullRequest
0 голосов
/ 10 октября 2019

Это мое состояние и массив:

this.state = {
  arr: [{
    arrid: 0,
    arrEmail: '',
    arrName: '',
    arrPhone: ''
  }],
  id: 0,
  email: "",
  isChecked: true,
  name: "",
  phone: "",
  isOpen: false,
  editedEmail: '',
  editedName: '',
  editedPhone: ''
};

Это место, где они редактируются:

updateEmail = value => {
  this.setState({ editedEmail: value });
};
updateName = value => {
  this.setState({ editedName: value });
};
updatePhone = value => {
  this.setState({ editedPhone: value });
};

Это функция динамического редактирования элемента:

editData = (row) => {
  this.refs.modal2.close();
  var arr3 = this.state.arr;
  var arrid = this.state.id;
  var index = arr3.indexOf(row);
  var editedName = this.state.editedName;
  var editedEmail = this.state.editedEmail;
  var editedPhone = this.state.editedPhone;

  this.setState({
    arrid: arrid,
    arrEmail: editedEmail,
    arrName: editedName,
    arrPhone: editedPhone
  });
}

Но это не редактируется. Во-первых, они не хранятся в.

arr3

1 Ответ

0 голосов
/ 10 октября 2019

Используйте это в вашей функции editData:

this.setState({arr:[...arr3.map(item=>item.arrid===arrid?{...item,arrEmail:editedEmail, arrName:editedName, arrPhone:editedPhone }:item)]});

...