如果您的状态中有一个对象,
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>
答案 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);
}