很长一段时间以来,我假设我放入componentDidMount
生命周期方法中的代码仅在安装了组件时才被调用。但是现在有人告诉我,情况并非总是如此。例如,当我在componentDidMount
方法内获取一些数据时,用户可以导航到另一个组件并导致我的组件卸载。当数据提取完成后,他们告诉我,数据提取后的代码行继续天真地执行,就好像组件仍在安装中一样,这会导致一些讨厌的错误。它是否做出反应,以确保在卸载组件时不运行我的代码,而仅在装载时恢复我的代码?
答案 0 :(得分:2)
通常,UI编程必须是异步的,以使按下按钮不会冻结整个视觉效果。因此,必须在框架中保留灵活性,例如不要为了等待生命周期方法而停止一切。这是程序员的工作。 API仅承诺在某些时候调用componentDidMount,别无其他。
如果您预计componentDidMount中的进程将长期运行,则可以定期检查例如是否调用了componentWillUnmount,如果已调用,则取消执行。