我试图通过使用路径来更改反应状态下的属性值:

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.getlodash for "select by object path"?

10-07 23:46