ReactJs:如何使用属性处理状态对象

ReactJs:如何使用属性处理状态对象,reactjs,Reactjs,我正在使用ReactJs,我想知道是否可以使用具有属性的状态对象。现在,我在下面制作了一个伪代码示例,其中有一个简单的对象,但我想处理很多对象都有自己的属性的情况 例如,我想处理以下情况: //初始化对象 getInitialState:函数(){ 返回{ myObject:{ 建议1:“, 建议二:“” } }; } //我将如何分配给该对象的属性 setProp1:函数(事件){ this.setState({myObject.prop1:event.target.value}); },

我正在使用ReactJs,我想知道是否可以使用具有属性的状态对象。现在,我在下面制作了一个伪代码示例,其中有一个简单的对象,但我想处理很多对象都有自己的属性的情况

例如,我想处理以下情况:

//初始化对象
getInitialState:函数(){
返回{
myObject:{
建议1:“,
建议二:“”
}
};
}
//我将如何分配给该对象的属性
setProp1:函数(事件){
this.setState({myObject.prop1:event.target.value});
},
//呈现项目(jsx)
{myObject.prop1}
{myObject.prop2}

上面的例子可能吗?或者我需要将每个属性直接附加到州吗?在Reactjs中处理这种情况的最佳方法是什么?

最好的方法是创建一个新对象,并更改指定的属性。您可以使用(使用或在必要时使用)之类的方法来完成此操作:

var newMyObj=Object.assign({},this.state.myObject{
prop1:event.target.value
});
this.setState({myObject:newMyObj});
您还可以使用来帮助更新嵌套结构:

var newMyObj=update(this.state.myObject,{prop1:{$set:event.target.value});
this.setState({myObject:newMyObj});
如果您使用的是Babel、JSX或其他支持操作的工具,那么可以稍微简化代码(这是我最喜欢的选项,因为我认为它读起来更好):

var newMyObj={
…this.state.myObject,
prop1:event.target.value
};
this.setState({myObject:newMyObj});
您经常会看到一些示例,这些示例只是更新现有对象并重新设置状态,但不建议这样做:

//反模式!
this.state.myObject.prop1=event.target.value;
this.setState({myObject:this.state.myObject});

您推荐哪个选项,为什么?@scripton在支持ES7语法的项目中,我通常更喜欢ES7语法,因为我认为它读起来更容易,并且可以将其解压缩到
对象中。无论如何,分配
。当您在操作深度嵌套的对象和/或数组,并且无法访问rest/spread运算符时,React immutability helpers非常好,但它们基本上做了相同的事情。感谢您提供的信息,我会检查一下,因为它似乎适合我的需要。