setstate模式以访问处于状态(react.js)的对象的属性

时间:2020-02-01 21:48:06

标签: javascript reactjs object

如果您的状态中有一个对象,

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

如何使用此设计模式访问项目对象的name属性?

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

我尝试将名称更改为item.name,但它只是创建了一个以item.name为键的状态。

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

2 个答案:

答案 0 :(得分:0)

怎么样:

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

答案 1 :(得分:0)

您不能以这种方式访问​​深度嵌套的属性,可以手动拆分字符串,然后递归索引到属性中,或使用现成的东西,例如lodash.set

import set from 'lodash.set';
...
changeMe = e => {
  const newState = set(this.state, e.target.name, e.target.value);
  this.setState(newState);
}