React:我们怎么知道在setState()之后已经挂载/渲染了所有组件?

jhe*_*dus 7 reactjs redux react-redux

在响应中,对component(R)的调用setState()可以触发所有子组件的重新呈现.

我们怎么知道什么时候结束了?R在挂载/渲染/更新所有子节点之后调用哪个生命周期方法?

更详细:

让我们考虑以下情况:

有一个根组件R,它的子组件C1C2.

我想实现我自己的redux存储,其中子组件(C1C2)可以调度操作,并且在已经挂载/重新渲染/更新所有子节点之后我想命令redux存储来处理调度的操作.

因此,我需要知道所有子项何时被渲染并安排调用redux存储,该存储将命令存储处理已调度的操作.

R在安装/渲染/更新所有子项之后调用哪个生命周期方法?

Jes*_*tes 11

更新:React已经改变了它的生命周期,但在这种情况下,你需要它的方法仍然是相同的.新的生命周期是:

A)安装

  1. constructor
  2. static getDerivedStateFromProps
  3. 给予
  4. componentDidMount

B)更新(包括道具和州)

  1. static getDerivedStateFromProps
  2. shouldComponentUpdate
  3. 给予
  4. getSnapshotBeforeUpdate
  5. componentDidUpdate

老答复

ComponentDidUpdate会做你说的.由于状态更改,它会在渲染后立即启动,因为道具更改或渲染.

生命周期:

A)安装

  1. 构造函数
  2. ComponentWillMount
  3. 给予
  4. ComponentDidMount

B)道具变化

  1. ComponentWillReceiveProps
  2. ShouldComponentUpdate
  3. 给予
  4. ComponentDidUpdate

C)国家变化

  1. ShouldComponentUpdate
  2. ComponentWillUpdate
  3. 给予
  4. ComponentDidUpdate

更多信息:https: //reactjs.org/docs/react-component.html#componentdidupdate


ato*_*mrc 9

我认为您正在寻找componentDidUpdate生命周期事件.https://facebook.github.io/react/docs/react-component.html#componentdidupdate

它在组件更新时触发(并且其所有子组件也都更新).

?在第一次渲染时不会触发此事件.如果您还需要处理第一次渲染,则必须同时使用componentDidUpdatecomponentDidMount