开发者社区> 范东洋> 正文

React中setState修改深层对象

简介: React中setState修改深层对象
+关注继续查看
在React中经常会使用到setState,因为在react生态中,state就是一切.在开发过程中,时长会在state中遇到一些比较复杂的数据结构,类似下面这样的:
state = {
     list: {
        objA: {
          name: 'A',
          age: 20
        },
        objB: {
          name: 'B',
          age: 25
        },
        objC: {
          show: false
        },
        objD: 'D'
      }
}

这时需要我们修改listobjA中的name属性和objD的属性,遇到这样的情况我们一般会使用什么办法解决呢?其实有三种解决方案:

方案一(作用于对象中的深层级和第一层级):

  this.setState({
     list: {
         ...this.state.list,
          objA: {
             ...this.state.list.objA,
                  name: 'A1'
                }
              }
            })

方案二(作用对象中的第一层级):

  let data = Object.assign({}, this.state.list, {objD: 'D1'})
    this.setState({
              list: data
            })

方案三(作用于对象中的深层级和第一层级):

  let data = this.state.list;
      data.objA.name = 'A1';
      data.objD = 'D1';
      this.setState({
              list: data
            })

总结:

| 方案 | 适用范围 | 缺点
| :-: | :-: | :-: |
| 方案一 |多层级和单一层级都存在 | 写法麻烦,单次对象赋值,对象层级多的时候,容易遗漏
| 方案二 |只适用与第一层级 | 只适用第一层级
| 方案三 |多层级和单一层级都存在 | 若存在深层及和单一层级的,需要多次赋值

这三种写法都可以,使用哪一种方案,还需要根据业务来定.希望看了之后,能给大家带来一些帮助,谢谢.

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
React setState执行两次的问题
React setState执行两次的问题解决修复。
6 0
React中setstate得回调用法
React中setstate得回调用法
10 0
#yyds干货盘点 【React工作记录二】React中setstate得回调用法
#yyds干货盘点 【React工作记录二】React中setstate得回调用法
27 0
React 中的useState 和 setState 的执行机制
React 中的useState 和 setState 的执行机制
122 0
React深入useState/setState
本文适合对React感兴趣的小伙伴,特别是想深入学习React的小伙伴
73 0
react setState 伪代码实现
我们大家都知道 react 的 setState 是异步的(也可以理解成同步的),在react 组件声明周期内的多次 setState 会进行合并处理。
27 0
react实战笔记102:setstate得执行流程1
react实战笔记102:setstate得执行流程1
29 0
react实战笔记102:setstate得执行流程2
react实战笔记102:setstate得执行流程2
23 0
你真的了解react中的setState吗?(setState现象及原理全方位解析)
在刚开始学习react的时候,我们会经常使用到setState改变状态,既然用的多,那么就应该思考:为什么要使用setState?setState是'异步'的吗?本篇文章就围绕着这两个问题展开
93 0
React 核心概念:JSX,虚拟 DOM,Diff 算法,setState,state 和 props 梳理
React 核心概念:JSX,虚拟 DOM,Diff 算法,setState,state 和 props 梳理
112 0
+关注
范东洋
专注移动端混合开发
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
React在大型后台管理项目中的工程实践
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载