Динамический reactjs с несколькими текстовыми полями

#javascript #arrays #reactjs #object #redux

#javascript #массивы #reactjs #объект #сокращение

Вопрос:

Я реализовал динамическое множественное текстовое поле в reactjs,

когда я добавляю новую строку, нажимая add кнопку, вводим ключевое текстовое поле и вводим значение текстового поля, щелчок по значку не добавляет строку.

может помочь, вот codesandbox https://codesandbox.io/s/dreamy-neumann-ov2wj

Ответ №1:

 handleValueChange = (event, row, i) => {
var newArray = JSON.parse(JSON.stringify([...this.state.additionalFields]));
newArray[row.id].value[i] = event.target.value;
this.setState({ additionalFields: newArray });
};
  

Создание глубокой копии свойства «AdditionalFields» в state object, похоже, устранило проблему.

Одна вещь, которую я обычно делаю при копировании ссылочного значения, содержащего 1 или более слоев других ссылочных значений (объектов, массивов), заключается в том, что я преобразую его в JSON с помощью JSON.stringify() , а затем преобразую его обратно в объект с помощью JSON.parse() . В результате получается массив, который не указывает на ваш исходный массив в вашем объекте состояния. Lodash имеет более читаемый способ с их cloneDeep() методом, но с ванильным JavaScript вы можете использовать мое решение.