调用渲染还是绘制 DOM?

Calling render vs painting the DOM?

我正在学习 React 并试图更好地了解生命周期和不同阶段。

我刚刚读到的一件事是“React 首先渲染然后挂载元素。在此上下文中渲染意味着调用 class 的 render(),而不是绘制 DOM”

我想我只是不太明白那是什么意思。有人可以用简单的方式或举例说明吗?

提前致谢!

首先是一些简化的定义:

  1. 浏览器使用 dom 来决定显示什么。在 React 中,这被称为 painting,因为每当 something 添加到 dom 时,浏览器必须重新绘制屏幕.
  2. dom 操作代价高昂。无论是时间还是资源
  3. React 看起来如此之快的原因之一是它使用了人们称之为 virtual dom 的东西。虚拟 dom 尝试镜像实际 dom,它们可能暂时不同步,因为对虚拟 dom 的所有更改不会立即反映在实际 dom 上(否则拥有虚拟 dom 有什么好处?)

记住这些定义,让我们看看 React 做了什么:

  1. 当 React 将触发 render 方法来填充其 虚拟 dom
  2. 它将保持批处理对虚拟 dom 的更改,并且一旦它确定了更改 的好时机屏幕,它将仅刷新 更改 到 dom。这叫做painting

React 在幕后使用了很多优化,我不知道所有这些(我也会争辩说,我不需要知道它们做了什么),但这里有一些事情要记住:

  1. 只要您的 render 方法返回相同的内容,React 就不会在屏幕上执行任何操作。
  2. 因此,预计 React 可能会多次调用 render 方法,即使您 不希望 调用它。
  3. 因此建议让您的渲染方法没有任何副作用或任何资源密集型操作,例如获取数据或转换数据结构。把它想象成:render 方法应该只包含与需要呈现的内容相关的逻辑,它可能需要做的任何其他事情,都可以在外部计算并放入状态或变量中,甚至可以记忆。