установить шаблон для доступа к свойству объекта в состоянии (reactjs) - PullRequest
0 голосов
/ 02 февраля 2020

Если у вас есть объект в состоянии,

state = {
  item: {
    name: ''
  }
}

Как использовать этот шаблон проектирования для доступа к свойству name объекта item?

changeMe = (e) => this.setState( {[e.target.name]: e.target.value});

Я попытался изменить name для item.name, но оно просто создает состояние с item.name в качестве ключа.

<Form.Control name="item.name" onChange={this.onChange} defaultValue={this.state.item.name}></Form.Control>

Ответы [ 2 ]

0 голосов
/ 02 февраля 2020

Вы не можете получить доступ к глубоко вложенным свойствам таким образом, вы можете либо вручную разделить строку, а затем рекурсивно индексировать свойство, либо использовать что-либо с полки, например, lodash.set

import set from 'lodash.set';
...
changeMe = e => {
  const newState = set(this.state, e.target.name, e.target.value);
  this.setState(newState);
}
0 голосов
/ 02 февраля 2020

Как насчет:

changeMe = (e) => this.setState( { item: {[e.target.name]: e.target.value} });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...