有两个问题请教

来源:7-10 setState为何使用不可变值

慕丝1117639

2022-03-14

问题1: 由于不可变值的思想,如果state中保存的数据是对象的话,是不是每次修改之前,都需要用深度拷贝函数,创建一个副本,如果对象的嵌套层数很大,或者数据量大,那岂不是效率很低吗?实际开发中会出现这种情况吗

问题2: 类中的this指向的是实例对象,请问这个实例对象指的是虚拟DOM,还是真实DOM?我想应该指向的是虚拟DOM,因为真实DOM需要虚拟DOM生成,所以现有虚拟DOM,才有真实DOM。那么setState就必然是更新的是虚拟DOM中的状态,然后真实DOM才更新。那么这个this.setState,中的this,必然就是虚拟DOM。我理解的没错吧?

写回答

1回答

双越

2022-03-14

第一,如果对象很复杂,可以使用 immutable.js 或者 immer 这样的“不可变数据”的功能,具体可以百度搜索

第二,this 指向的是组件示例,并不是虚拟 DOM 或者真实 DOM。setState 是组件实例的方法。

0
2
双越
回复
慕丝1117639
虚拟DOM 是组件实例的一个属性,可以这么理解。
2022-03-15
共2条回复

前端框架及项目面试 聚焦Vue3/React/Webpack

面向1-3年前端的框架及项目面试“刚需内容”

4730 学习 · 1674 问题

查看课程