道具更新,componentDidUpdate 没有触发

J S*_*olt 7 reactjs react-lifecycle react-props

是否存在 componentDidUpdate 不会触发的情况,即使在 React 中更新了 props?

小智 6

有 3 种情况会导致 componentDidUpdate 不触发:

1) 您编写了一个返回 false 的自定义 shouldComponentUpdate。

2)内部react方法确定虚拟DOM没有变化,所以选择不重新渲染。

3) 你扩展了 React.Component 以外的东西(比如 PureComponent),它有一个返回 false 的默认 shouldComponentUpdate 方法。

  • 我有一种情况,其中带有 mapStateToProps 的容器中的道具正在更新,组件中的道具正在更新(只是一个字符串),组件正在重新渲染....并且 componentDidUpdate 没有关闭。它似乎不符合任何这些情况。非常非常奇怪。 (3认同)
  • 我在渲染函数中有一个 console.log 。我也有有问题的道具 console.logged 之后。它重新渲染。它有新数据。我可以在容器中和实际渲染函数中看到它……但是 componentDidUpdate 什么也不做。它实际上适用于其他上下文,但在这个用例中,它只是坐在那里,在组件重新渲染时什么也不做。 (3认同)

ugr*_*pla 3

您可以通过在 中返回 false 来抑制渲染shouldComponentUpdate()。所以是的,在这种情况下componentDidUpdate()不会开火。