组件卸载是否可以保证为所有后代调用componentWillUnmount?

时间:2019-06-03 12:30:21

标签: reactjs

这点我目前还不清楚,而且我找不到任何有关它的文档。

要卸载React组件时(即调用componentWillUnmount),是否可以保证所有后代都可以正确卸载(因此也调用componentWillUnmount)?

换句话说,在卸载阶段,整个层次结构(在起始节点下)将被遍历,还是只是要删除的确切节点?

1 个答案:

答案 0 :(得分:1)

是的,这是在对帐过程中完成的。

  

React将以递归方式装载,更新和卸载子组件   如所须。该过程确定为基础虚拟DOM组件后,   React更新实际的DOM。

     

当父组件不再是组件时,将卸载组件   渲染或父组件执行的更新不   渲染此实例。 ReactDOM.unmountComponentAtNode也将   触发卸载。

可以找到参考文献here

此外,React对于复合和DOM组件具有不同的过程:

  • 对于用户定义的(“复合”)组件,卸载将调用生命周期方法并递归。
  • 对于“简单” DOM元素,卸载会告诉每个孩子卸载(child.unmount()

请参阅React的实现细节here