javascript - 使用 (ES6) 计算属性名称更新嵌套对象

标签 javascript reactjs

就我而言,我使用的是 React.js,并且我想动态更新 deployOptions 对象中的值。

例如 -

初始状态如下:

getInitialState() {
    return {
      deployOptions: {
        config: null,
        action: 'deploy',
        env: 'qa'
      }
    }
  }

显然这是不正确的 - 但这就是我想要实现的目标

configOptionChange(option) {

    // option -> { key: 'env', value: 'prod' }

    this.setState({
      [deployOptions.option.key]: option.value
    });
  }

这样我的状态就会是

{
    deployOptions: {
      config: null,
      action: 'deploy',
      env: 'prod' // only this changes
    }
}

最佳答案

它不是特别漂亮,但我认为这是 ES6 能做的最好的事情:

configOptionChange({ key, value }) {
  this.setState({
    ...this.state,
    deployOptions: {
      ...this.state.deployOptions,
      [key]: value
    }
  });
}

它基本上等同于您自己的 Object.assign 解决方案,但使用 ES6 扩展 (...) 运算符(以及参数解构以实现良好的测量)。

这是第二个选项,虽然不那么聪明,但对我来说感觉更干净:

configOptionChange({ key, value }) {
  const { deployOptions: prevDeployOptions } = this.state;
  const deployOptions = { ...prevDeployOptions, [key]: value };
  this.setState({ ...this.state, deployOptions });
}

关于javascript - 使用 (ES6) 计算属性名称更新嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34072009/

相关文章:

javascript - HTML5 我可以将 <img> 与 <source> 一起使用吗

javascript - jQuery 中传递的 HTML 中的 find()、each() 和 Replacewith()

reactjs - 如何更改 Material-UI AppBar 的明暗主题颜色?

reactjs - Jest - 模拟函数,从另一个文件导入

javascript - 创建一个 javascript 对象并绑定(bind)它

javascript - 将滚动条添加到附加框

javascript - 如何在js中处理一个非常大的数组

javascript - Webpack 无法读取 ReactJS props

javascript - 使用react.js在其他组件内渲染组件

javascript - 如何从 parent 的样式组件访问 child 的 Prop ?