Как обновить значение в массиве объектов при вызове текста onchange (в плоском списке) - PullRequest
1 голос
/ 27 января 2020

Существует значение состояния

savedData: [
  { key: 'First Name', value: '' },
  { key: 'Last Name', value: '' },
  { key: 'Mobile', value: '' },
  { key: 'Email', value: '' },
  { key: 'Password', value: '' },
  { key: 'Forgot Password', value: '' },
  { key: 'CheckBox1', value: '' },
]

Текстовые входы находятся в плоском списке, каждый текстовый ввод отображается в каждой ячейке. Как я могу обновить значение в массиве по индексу, когда вызывается onChange ввода текста, без с использованием переменных состояния или глобальных переменных?

1 Ответ

3 голосов
/ 27 января 2020

Вы можете передать key в качестве параметра для onChange метода

onChange={() => this.handleChange("First Name")}

и затем просто обновить значение.

let field = savedDate.find(({key}) => key == key_param);
field.value = ...

Я бы рекомендовал использовать поле id в качестве ключа для savedData состояния и просто передать event.target.id в качестве параметра.

savedData:[
    {key:'firstName',value:''},
    {key:'lastName',value:''},
    {key:'mobile',value:''},
    {key:'email',value:''},
    {key:'password',value:''},
    {key:'forgot Password',value:''},
    {key:'checkBox1',value:''},
 ]

 ...............

 onChange={(e) => this.handleChange(e.target.id)}
...