我试图通过使用路径来更改反应状态下的属性值:
handleChange = (e, path) => {
e.persist();
let newState = this.state || {};
(newState[path] || {})[e.target.name] = e.target.value;
this.setState(newState);
}
问题是,输入路径时,newState [path]未定义,但工作正常。
console.log(path); //form.section[0]
console.log(newState[path]); //undefined
console.log(newState.form.section[0]); { type: "person", gender: "female", ... }
有人可以帮我吗?
最佳答案
newState
没有名为“ form.section [0]”的属性,这是编写newState[path]
时要尝试访问的属性。 newState
确实具有一个名为“ form”的属性,这是一个具有名为“ section”(它是一个数组)的属性的对象。这就是为什么编写newState.form.section[0]
会为您提供所需结果的原因。
您应该使用此处提到的lodash.get
:lodash for "select by object path"?