Javascript 如何在react中设置类属性的值
如何使用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; 回来 } } 导出默认应用程序;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; 回来 } } 导出
您无法访问这样的状态属性。一种可能的解决方案是从字段创建副本,修改值,然后设置新状态,如下所示:
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属性来指出这一点。更改代码以反映这一点。