当前位置: 首页 > 面试题库 >

如何为嵌套对象设置状态?

太叔炎彬
2023-03-14
问题内容

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

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

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

这似乎删除了除了hospital_id之外的所有内容:

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

问题答案:

您有几种选择:

  1. 借助ECMA6,您可以使用对象传播建议(...)创建具有更新属性的对象的副本。
        this.setState({
      access: {
        ...this.state.access,
        hospital_id: 1,
      },
    });
  1. 您可以在对象(Object.assign())上使用本机分配功能
        this.setState({
      access: Object.assign({}, this.state.access, {
        hospital_id: 1,
      }),
    });
  1. 或为最短的版本和原子更新:
         this.setState(({access}) => ({access: {
       ...access,
       hospital_id: 1,
     }});
  1. 还有一个选项是更新插件:
        var update = require('react-addons-update');
    // per React docs 
    // https://reactjs.org/docs/update.html 
    // , you may want to change this to 
    // import update from 'immutability-helper';
    this.setState({
      access: update(this.state.access, {
        hospital_id: {$set: 1},
      })
    });

我建议使用第一个。



 类似资料:
  • 对于我正在使用的插件,我必须具有如下状态: 如何在不设置其余访问权限的情况下设置hospital_id状态? 这似乎删除了一切,但hospital_id:

  • 我想知道是否有一种方法可以使用useState()更新React中的嵌套对象状态

  • 问题内容: 我有一个对象,它可以是任何数量的深度,并且可以具有任何现有属性。例如: 在此我想设置(或覆盖)属性,如下所示: 属性字符串可以具有任何深度,并且值可以是任何类型/事物。 如果属性键已经存在,则不需要合并对象和数组作为值。 前面的示例将产生以下对象: 如何实现这种功能? 问题答案: 此函数使用您指定的参数应添加/更新容器中的数据。请注意,您需要跟踪架构中的哪些元素是容器,哪些是值(字符串

  • 我有一个对象,可以是任何数量的层次深,可以有任何现有的属性。例如: 在此基础上,我希望设置(或覆盖)如下属性: 属性字符串可以有任何深度,值可以是任何类型/事物。 如果属性键已经存在,则不需要合并作为值的对象和数组。 上一个示例将生成以下对象: 如何实现这样的功能?

  • 我有这门课: 并希望在“列表”状态数组中的“卡片”数组上使用setState。以前,我在子组件中使用了cards数组,但现在我将其上移到Board类。这是我以前拥有的功能。 我如何改变它,使它现在工作,卡是在另一个数组? 我无法解决它看这些帖子: ReactJS-数组中对象键的设置状态 如何编辑状态数组中的项?

  • 当我试图使用ModelMapper将嵌套的java对象转换为嵌套的DTO时,我遇到了一个问题。在父DTO对象中,子DTO为null。以下是代码片段。 实体类: DTO的课程: 这是映射器代码: 输出: 输出用户DTO:UserDTO[名称=xyz,地址=null,产品=null] 在这里,我想将用户实体转换为UserDTO-dto。我得到了地址和产品DTO的空值。我在这里到底缺少什么?有人知道吗?