Javascript 如何在react中设置类属性的值

Javascript 如何在react中设置类属性的值,javascript,reactjs,Javascript,Reactjs,如何使用setState访问和设置类的动态e.target.value 我试过这个.setState{fields[e.target.name]:e.target.value} 类应用程序扩展组件{ 建造师{ 超级的 此.state={ 数据:[], 字段:{ 姓名: } } } handleChange=e=>this.setState{fields[e.target.name]:e.target.value}; 渲染{ const{fields}=this.state; 回来 } } 导出

如何使用setState访问和设置类的动态e.target.value

我试过这个.setState{fields[e.target.name]:e.target.value}

类应用程序扩展组件{ 建造师{ 超级的 此.state={ 数据:[], 字段:{ 姓名: } } } handleChange=e=>this.setState{fields[e.target.name]:e.target.value}; 渲染{ const{fields}=this.state; 回来 } } 导出默认应用程序;
您无法访问这样的状态属性。一种可能的解决方案是从字段创建副本,修改值,然后设置新状态,如下所示:

handleChange = e => {  
    // The line below creates a copy of the state, using the spread operator
    let fields = { ...this.state.fields };
    fields[e.target.name] =  e.target.value
    this.setState({fields});
}

您无法访问这样的状态属性。一种可能的解决方案是从字段创建副本,修改值,然后设置新状态,如下所示:

handleChange = e => {  
    // The line below creates a copy of the state, using the spread operator
    let fields = { ...this.state.fields };
    fields[e.target.name] =  e.target.value
    this.setState({fields});
}

这是一个与此稍有相似的示例。有两种方法可以更新对象。正如其他人所说,像这样的嵌套状态是一种反模式。这是一个很好的解释

1-最简单的一个:

首先创建字段的副本,然后进行以下更改:

let fields = Object.assign({}, this.state.fields);    //creating copy of object
fields[e.target.name] =  e.target.value               //updating value
this.setState({fields});
除了使用Object.assign,我们还可以这样编写:

let fields = {...this.state.fields};
2-使用:


这是一个与此稍有相似的示例。有两种方法可以更新对象。正如其他人所说,像这样的嵌套状态是一种反模式。这是一个很好的解释

1-最简单的一个:

首先创建字段的副本,然后进行以下更改:

let fields = Object.assign({}, this.state.fields);    //creating copy of object
fields[e.target.name] =  e.target.value               //updating value
this.setState({fields});
除了使用Object.assign,我们还可以这样编写:

let fields = {...this.state.fields};
2-使用:


我会使用let fields={…this.state.fields};而不是simplicityOr甚至让fields=[…this.state.fields]。将它添加到答案中。非常感谢。注意,字段是一个对象,而不是数组@我没有注意到,对不起,我会使用let fields={…this.state.fields};而不是simplicityOr甚至让fields=[…this.state.fields]。将它添加到答案中。非常感谢。注意,字段是一个对象,而不是数组@NinoFiliu我没有注意到,sorryNested state在React中是反模式的:组件的状态应保持平坦,以准确面对您面临的问题。Nested state在React中是反模式的:组件的状态应保持平坦,以准确面对您面临的问题。OP希望使用e.target.value更新字段值,不仅仅是Fields的name属性感谢您指出这一点。更改代码以反映这一点。OP希望使用e.target.value更新字段值,而不仅仅是FieldsHanks的name属性来指出这一点。更改代码以反映这一点。