调用渲染还是绘制 DOM?
Calling render vs painting the DOM?
我正在学习 React 并试图更好地了解生命周期和不同阶段。
我刚刚读到的一件事是“React 首先渲染然后挂载元素。在此上下文中渲染意味着调用 class 的 render(),而不是绘制 DOM”
我想我只是不太明白那是什么意思。有人可以用简单的方式或举例说明吗?
提前致谢!
首先是一些简化的定义:
- 浏览器使用
dom
来决定显示什么。在 React 中,这被称为 painting,因为每当 something 添加到 dom 时,浏览器必须重新绘制屏幕.
dom
操作代价高昂。无论是时间还是资源
- React 看起来如此之快的原因之一是它使用了人们称之为
virtual dom
的东西。虚拟 dom 尝试镜像实际 dom,它们可能暂时不同步,因为对虚拟 dom 的所有更改不会立即反映在实际 dom 上(否则拥有虚拟 dom 有什么好处?)
记住这些定义,让我们看看 React 做了什么:
- 当 React 将触发
render
方法来填充其 虚拟 dom
- 它将保持批处理对虚拟 dom 的更改,并且一旦它确定了更改 的好时机屏幕,它将仅刷新 更改 到 dom。这叫做
painting
。
React 在幕后使用了很多优化,我不知道所有这些(我也会争辩说,我不需要知道它们做了什么),但这里有一些事情要记住:
- 只要您的
render
方法返回相同的内容,React 就不会在屏幕上执行任何操作。
- 因此,预计 React 可能会多次调用
render
方法,即使您 不希望 调用它。
- 因此建议让您的渲染方法没有任何副作用或任何资源密集型操作,例如获取数据或转换数据结构。把它想象成:
render
方法应该只包含与需要呈现的内容相关的逻辑,它可能需要做的任何其他事情,都可以在外部计算并放入状态或变量中,甚至可以记忆。
我正在学习 React 并试图更好地了解生命周期和不同阶段。
我刚刚读到的一件事是“React 首先渲染然后挂载元素。在此上下文中渲染意味着调用 class 的 render(),而不是绘制 DOM”
我想我只是不太明白那是什么意思。有人可以用简单的方式或举例说明吗?
提前致谢!
首先是一些简化的定义:
- 浏览器使用
dom
来决定显示什么。在 React 中,这被称为 painting,因为每当 something 添加到 dom 时,浏览器必须重新绘制屏幕. dom
操作代价高昂。无论是时间还是资源- React 看起来如此之快的原因之一是它使用了人们称之为
virtual dom
的东西。虚拟 dom 尝试镜像实际 dom,它们可能暂时不同步,因为对虚拟 dom 的所有更改不会立即反映在实际 dom 上(否则拥有虚拟 dom 有什么好处?)
记住这些定义,让我们看看 React 做了什么:
- 当 React 将触发
render
方法来填充其 虚拟 dom - 它将保持批处理对虚拟 dom 的更改,并且一旦它确定了更改 的好时机屏幕,它将仅刷新 更改 到 dom。这叫做
painting
。
React 在幕后使用了很多优化,我不知道所有这些(我也会争辩说,我不需要知道它们做了什么),但这里有一些事情要记住:
- 只要您的
render
方法返回相同的内容,React 就不会在屏幕上执行任何操作。 - 因此,预计 React 可能会多次调用
render
方法,即使您 不希望 调用它。 - 因此建议让您的渲染方法没有任何副作用或任何资源密集型操作,例如获取数据或转换数据结构。把它想象成:
render
方法应该只包含与需要呈现的内容相关的逻辑,它可能需要做的任何其他事情,都可以在外部计算并放入状态或变量中,甚至可以记忆。