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

时间:2017-06-28 09:05:43

标签: reactjs redux react-redux

在对组件(R)的调用做出反应时,setState()可以触发重新呈现所有子组件。

我们怎么知道什么时候结束了? 在R的所有子项都已挂载/呈现/更新后调用哪个生命周期方法?

更详细:

让我们考虑以下情况:

根组件R及其子组件C1C2

我想实现我自己的redux商店,其中子组件(C1C2)可以调度操作,并且所有子组件已经挂载/重新呈现/更新后我想命令redux存储来处理调度的操作。

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

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

2 个答案:

答案 0 :(得分:10)

更新:React已改变其生命周期,但在这种情况下,您需要的方法仍然相同。新的生命周期是:

A)安装

  1. 构造
  2. static getDerivedStateFromProps
  3. 呈现
  4. componentDidMount
  5. B)更新(包括道具和州)

    1. static getDerivedStateFromProps
    2. shouldComponentUpdate
    3. 呈现
    4. getSnapshotBeforeUpdate
    5. componentDidUpdate
    6. 老答案

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

      生命周期:

      A)安装

      1. 构造
      2. ComponentWillMount
      3. 渲染
      4. ComponentDidMount
      5. B)道具变更

        1. ComponentWillReceiveProps
        2. ShouldComponentUpdate
        3. 渲染
        4. ComponentDidUpdate
        5. C)状态变化

          1. ShouldComponentUpdate
          2. ComponentWillUpdate
          3. 渲染
          4. ComponentDidUpdate
          5. 更多信息: https://reactjs.org/docs/react-component.html#componentdidupdate

答案 1 :(得分:9)

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

在更新组件时会触发它(并且它的所有子组件也都会更新)。

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