检查是否在componentDidMount生命周期方法中安装了组件是否很荒谬?

时间:2019-11-29 19:48:48

标签: reactjs

很长一段时间以来,我假设我放入componentDidMount生命周期方法中的代码仅在安装了组件时才被调用。但是现在有人告诉我,情况并非总是如此。例如,当我在componentDidMount方法内获取一些数据时,用户可以导航到另一个组件并导致我的组件卸载。当数据提取完成后,他们告诉我,数据提取后的代码行继续天真地执行,就好像组件仍在安装中一样,这会导致一些讨厌的错误。它是否做出反应,以确保在卸载组件时不运行我的代码,而仅在装载时恢复我的代码?

1 个答案:

答案 0 :(得分:2)

通常,UI编程必须是异步的,以使按下按钮不会冻结整个视觉效果。因此,必须在框架中保留灵活性,例如不要为了等待生命周期方法而停止一切。这是程序员的工作。 API仅承诺在某些时候调用componentDidMount,别无其他。

如果您预计componentDidMount中的进程将长期运行,则可以定期检查例如是否调用了componentWillUnmount,如果已调用,则取消执行。