Is there ever a situation where componentDidUpdate would NOT fire, even if the props updated in React?
问题:
回答1:
There are 3 conditions that can cause componentDidUpdate to not fire:
1) You wrote a custom shouldComponentUpdate that returned false.
2) The internal react methods determined that there was no change in the virtual DOM, so it chose not to re-render.
3) You extended something other than React.Component (such as PureComponent) which has a default shouldComponentUpdate method that returned false.
回答2:
You can suppress a render with returning false in shouldComponentUpdate()
.
So yes, in that case componentDidUpdate()
won't fire.
回答3:
this can also happen, if your component is in a list and the key of your component changes (ie. on every render) or the key is missing, or the key is duplicate, etc.
refer to docs for details: https://reactjs.org/docs/lists-and-keys.html