javascript - 如何更改 State 中嵌套对象的属性?

标签 javascript reactjs object ecmascript-6

例如状态看起来像这样

{
  ownRecipe: {name:""}
}

现在我需要更改名称属性,这不起作用

this.setState({ownRecipe[name]:"Pineapple pizza"});

这可行,但也许有更好的方法?

let ownRecipeCopy = {}
for(let key in this.state.ownRecipe){
  ownRecipeCopy[key] = this.state.ownRecipe[key];
}
ownRecipeCopy.name = e.target.value;
this.setState({ownRecipe: ownRecipeCopy});

编辑:感谢大家的回答

最佳答案

传播原始对象并更改您想要的属性:

this.setState(prevState =>({
    ownRecipe : {
        ...prevState.ownRecipe,
        name : 'new name'
    }
}));

关于javascript - 如何更改 State 中嵌套对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57376673/

相关文章:

javascript - Node.js中如何将异步转换为同步

javascript - 在组件中读取文本输入引用时,React Native refs 未定义

javascript - 如何从路径(键数组)创建嵌套对象结构?

javascript - 使用 jQuery 将音频播放限制为特定的持续时间

javascript - 使用 HTML5 Canvas + KineticJS 绘制完美的圆弧

javascript - 是否有用于显示带有 "hole"的半透明叠加层的 React 包?

c# - 交换数组中的对象 - C#

c# - 数据表填充对象

javascript - React Jest 测试按钮 onClick

reactjs - 没有国家选择器的 react 电话号码输入