Reactjs React componentWillUnmount-如果组件将从DOM中删除,从而停止计时器等,为什么要取消任何操作?
我想知道并且找不到关于以下内容的任何信息:如果某个组件将卸载,那么所有订阅或计时器等都将停止。如果在不使用componentWillUnmount的情况下发生这种情况,为什么我需要在componentWillUnmount中删除它们?!Reactjs React componentWillUnmount-如果组件将从DOM中删除,从而停止计时器等,为什么要取消任何操作?,reactjs,Reactjs,我想知道并且找不到关于以下内容的任何信息:如果某个组件将卸载,那么所有订阅或计时器等都将停止。如果在不使用componentWillUnmount的情况下发生这种情况,为什么我需要在componentWillUnmount中删除它们?! 例如,如果我的componentDidMount中有setInterval,它将在组件卸载后停止,那么为什么我要取消setInterval?setInterval和setTimeout附加到窗口,而不是您的组件,因此,当您卸载组件时,它不会被清除,它可能仍然调用
例如,如果我的componentDidMount中有setInterval,它将在组件卸载后停止,那么为什么我要取消setInterval?
setInterval
和setTimeout
附加到窗口,而不是您的组件,因此,当您卸载组件时,它不会被清除,它可能仍然调用引用您组件的回调函数,例如调用this.setState
,如果组件卸载,它将发出警告。setInterval
和setTimeout
附加到窗口,而不是您的组件,因此,当您卸载组件时,它不会被清除,它可能仍会调用引用您组件的回调函数,例如调用this.setState
,如果组件被卸载,它将发出警告。否,它不会被取消。这就是为什么您必须取消componentWillUnmount中的所有订阅。您可以自己检查它,从组件内部将任何事件列表器绑定到窗口,在其中编写控制台,即使您的组件将从dom中删除,您仍然可以看到控制台和事件触发,如果您在卸载时未将其删除
是的,在卸载组件后,您可能看不到dom中的效果,但它仍可能在后台运行,这可能会导致错误或影响应用程序的性能。否,不会取消。这就是为什么您必须取消componentWillUnmount中的所有订阅。您可以自己检查它,从组件内部将任何事件列表器绑定到窗口,在其中编写控制台,即使您的组件将从dom中删除,您仍然可以看到控制台和事件触发,如果您在卸载时未将其删除
是的,在卸载组件后,您可能看不到dom中的效果,但它仍可能在后台运行,这可能会导致错误或影响应用程序的性能。谢谢,我相信它不会被取消,也不会被混淆。谢谢,我相信它不会被取消,也不会被混淆。谢谢。一个附带的问题:如果它没有连接到我的组件,为什么不在setInterval内设置状态,给我一个错误:[……]未定义,因为如果我的组件被卸载,它就不再有状态,在setInterval中我会尝试设置它?相反,我只看到了一个警告,我相信这是因为您的组件是一个js函数或类,它被导入并且仍然存在——从技术上讲——即使在卸载之后。这就是定义。这就是react的工作方式,谢谢。一个附带的问题:如果它没有连接到我的组件,为什么不在setInterval内设置状态,给我一个错误:[……]未定义,因为如果我的组件被卸载,它就不再有状态,在setInterval中我会尝试设置它?相反,我只看到了一个警告,我相信这是因为您的组件是一个js函数或类,它被导入并且仍然存在——从技术上讲——即使在卸载之后。这就是定义。这就是react的工作方式。