лучший способ использовать onSubmit при попытке вставить объект в массив - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь написать более эффективный способ установить состояние массива с новым объектом, мое состояние таково:

 state = {
    names: [],
    tempName: {
      name: '',
      mail: ''
    }
  };

Я использую при отправке, вот так:

 onSubmit = e => {
    e.preventDefault();
    const inputs = [...this.state.names, this.state.tempName];
    const tempName = { name: '', mail: ''};
    this.setState({ inputs, tempInput });

};

и я надеялся сделать что-то более короткое, как это:

    onSubmit = e => {
      e.preventDefault();
      const { tempName } = this.state.tempName;
      this.setState(curr => ({
       names: [{ ...curr.names, tempName }]
    }));
  };

но все, что я получаю, это ссылка на объект внутри массива, есть ли лучший способ сделать это, чем указанный выше?

1 Ответ

0 голосов
/ 06 ноября 2018

Вы можете использовать оператор распространения для объекта, чтобы скопировать его перечислимые свойства в новый объект.

onSubmit = e => {
  e.preventDefault();
  this.setState(currentState => ({
    names: [...currentState.names, {...currentState.tempName}],
    tempName: {
      name: '',
      mail: ''
    }
  }));
};
...