如何为嵌套对象设置setState? [英] How do I setState for nested object?

查看:898
本文介绍了如何为嵌套对象设置setState?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对于我正在使用的插件,我必须有一个如下所示的状态:

For a plugin I'm using I have to have a state that looks like this:

getInitialState() {
  return {
    invalid: true,
    access: {
      access_code: '',
      zipcode: '',
      password: '',
      confirm: '',
      hospital_id: '',
    },
  }
},

如何在不设置剩余访问权限的情况下设置hospital_id的状态?

How would I set the state of hospital_id without setting the rest of access?

这似乎除了hospital_id之外的一切:

This seems to remove everything but hospital_id:

this.setState({access: {hospital_id: 1}})


推荐答案

您可以使用Object.assign或对象传播提议来创建具有更新属性的对象的副本。

You can use Object.assign or the object spread proposal to create copies of objects with updated properties.

this.setState({
  access: {
    ...this.state.access,
    hospital_id: 1,
  },
});

this.setState({
  access: Object.assign({}, this.state.access, {
    hospital_id: 1,
  }),
});

或者最短版本和原子更新:

Or for the shortest version and atomic update:

this.setState(({access}) => ({access: {
  ...access,
  hospital_id: 1,
}});

还有一个选项是更新插件:

And one more option is the updates addon:

var update = require('react-addons-update');
this.setState({
  access: update(this.state.access, {
    hospital_id: {$set: 1},
  })
});

我会使用第一个。

这篇关于如何为嵌套对象设置setState?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆