我的账户
猩码学苑

专注C++开发菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

梁洁---20230201---react第四天

[复制链接]
梁杰,你好 发表于 2023-2-1 23:34:08 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
react  推荐的异步转同步

this.setState(state=>{
return  {
xxx:state.xxx
}

this.setState((state) => {
      return {
        num: state.num + 1,
      };
    });
})

系统提供的函数中的this都是指向的实例对象

组件优化
1、减轻state
两种数据不需要放在state里面
1)、变化不会引起页面重新渲染的
2)、数据不会发生变化的
2、避免不必要的渲染
数据重复更新的时候 借助componentWillUnmount方法里面的参数newProp ,newState
对值进行对比,重读的可以不进行更新
3、纯组件
声明类组件的时候extneds  React.PureComponent,会自动对state和prop进行比较

dom中的节点分类
文本节点
标签节点
属性节点
注释节点

虚拟dom:
就是用一个原生的js对象去描述一个dom节点,他只是真实Dom节点的一个抽象层、、

diff算法
核心逻辑
diff算法只发生在更新阶段,创建和销毁没有。
创建阶段,react根据jsx生成一个虚拟dom,再通过虚拟产生真实的Dom,最后真实的dom渲染到了页面上

更新解读那,react会出降一个新的虚拟dom(新的),新旧虚拟都没进行对比,找到新的虚拟dom和旧的虚拟dom的不一样的点。
找到之后再更新回旧的虚拟dom,,再将就的虚拟dom和新的真实节点不一样的额地方更新到
页面上

key的作用就是对每一个节点及您修改标记,方便后续新节点生成的时候比较的过程,
如果没有key的值  ,数组中新加入元素的时候,会挨个进行比较,如果是给数组第一个位置添加元素,再挨个进行比较的时候,所有的节点都不一样,需要摧毁重建
耗时比较多,有key值的话,就会直接比较key值有无相同的 ,有的话就不再摧毁重建,没有的话再进行重建

回复

使用道具 举报

关注0

粉丝0

帖子77

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注C++菁英教育

客服电话:18009298968

客服时间:9:00-21:00

猩码学苑 - 专注C++开发菁英教育!( 陕ICP备2025058934号-1 )

版权所有 © 陕西菁英数字科技有限公司 2023-2026