请止步禁区

文章 评论 浏览 28

请止步禁区 2022-05-04 13:57:54

react Diffing算法详解

render函数执行会产生react元素树,下次render会产生另外一个元素树,react需要对比两个元素树差别,来更新同步真实DOM,使用最简单的广度优先遍历,时间复杂度达到O(n^3)
react使用O(n)启发式算法,提出以下两个假设:

  1. 不同的元素肯定会产生不同的树
  2. 可以使用key来指定哪一些元素不用更新

元素树的更新有以下几种情况:

  1. 无需更新
  2. 全新的节点,新增一个DOM阶段
  3. 需要修改属性的节点,更新样式或者其他属性
  4. 不需要的节点,需要删除

注意情况

  1. 根元素相同的元素不会删除节点,而是会原地复用
  2. key可以用来指定无需更新的元素

key元素的作用是用来指定当前元素无需删除,只需要原地复用

第 1 题:写 React / Vue 项目时为什么要在列表组件中写 key,其作用是什么?

请止步禁区 2022-05-02 21:34:24

var和let/const的区别

  • 块级作用域
  • 不存在变量提升
  • 暂时性死区
  • 不可重复声明
  • let、const声明的全局变量不会挂在顶层对象下面

const:

  • const 声明之后必须马上赋值,否则会报错
  • const 简单类型一旦声明就不能再更改,复杂类型(数组、对象等)指针指向的地址不能更改,内部数据可以更改(const 不能更改是指指针指向的地址不能更改,所以简单类型表现为不能更改,复杂类型更改值不会导致他的指针地址变化)

let/const

  • let 一般用来声明变量

  • const 声明常量 函数

第 177 题:var、let、const 有什么区别?

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文