在 React 组件中实际渲染多少次 运行

How many times render will actually run in a React Component

当我偶然发现这个时,我正在研究 React LifeCycle 方法:

我看到 render() 函数 运行 两次时感到困惑。我所知道的是 React Life-Cycle 运行 中的任何函数都只有一次。那么,为什么我在这里看到 2 个渲染函数(或 运行ning 2 次)。会不会影响内存和过度使用 运行ning 第二次。

此外,我们如何知道渲染函数会 运行(或在什么阶段),因为它可以 运行 在 React Cycle 的两个地方。 Kinldy,帮忙澄清一下。

参考:

https://gist.github.com/bvaughn/923dffb2cd9504ee440791fade8db5f9

对于一个组件,render() 函数显然可以 运行 多次用于同一个安装。您可以参考 React 文档中的 this table。

从table可以看出,如果挂载一个组件,只有constructorcomponentDidMount会运行一次(不包括componentWillUnmount也运行 组件卸载时一次),而其他生命周期方法可以 运行 无限次,取决于该组件的更新次数。

Mounting

起初,Reactjs 只会渲染一次方法,生命周期为:

constructor();
static getDerivedStateFromProps()
render();
componentDidMount();

Updating

但是当你更新时component state or on receiving new props会触发 以下生命周期:

static getDerivedStateFromProps()
shouldComponentUpdate();
render();
getSnapshotBeforeUpdate();
componentDidUpdate();

不是这样,从 shouldComponentUpdate() 返回 false 不会触发渲染

render()之外的所有方法都是可选的

简短的回答是,每当 state 或 prop 的值发生变化时,您的渲染方法将 运行 直到并且除非您像@Navin Gelot 提到的那样通过从生命周期方法返回 false 强制停止,那么它将不会 运行 呈现方法,否则是。