Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs Isn';检查一个组件是否安装在“componentDidMount”生命周期方法中难道不可笑吗?_Reactjs - Fatal编程技术网

Reactjs Isn';检查一个组件是否安装在“componentDidMount”生命周期方法中难道不可笑吗?

Reactjs Isn';检查一个组件是否安装在“componentDidMount”生命周期方法中难道不可笑吗?,reactjs,Reactjs,很长一段时间以来,我一直认为我放在componentDidMount生命周期方法中的代码只有在安装组件时才会被调用。但现在有人告诉我,情况可能并非总是如此。例如,当我在componentDidMount方法中获取一些数据时,用户可以导航到另一个组件并使我的组件卸载。当数据提取完成后,他们告诉我,数据提取后的代码行继续天真地执行,就好像组件仍在装载一样,这会导致一些严重的错误。react的任务不是确保我的代码在卸载组件时不会运行,并且只有在安装组件时才会恢复吗 UI编程通常必须是异步的,这样按下按

很长一段时间以来,我一直认为我放在
componentDidMount
生命周期方法中的代码只有在安装组件时才会被调用。但现在有人告诉我,情况可能并非总是如此。例如,当我在
componentDidMount
方法中获取一些数据时,用户可以导航到另一个组件并使我的组件卸载。当数据提取完成后,他们告诉我,数据提取后的代码行继续天真地执行,就好像组件仍在装载一样,这会导致一些严重的错误。react的任务不是确保我的代码在卸载组件时不会运行,并且只有在安装组件时才会恢复吗

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


如果您预期componentDidMount中会有长时间运行的进程,您可以定期检查是否调用了componentWillUnmount,如果调用了,则取消执行。

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


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

这是因为获取数据是一项异步任务。逻辑是这样的:组件装载>调用异步获取>用户更改视图>同时异步获取完成并使用新数据调用setState>响应尝试相应地更新状态,但无法再找到它。React不能也不应该取消您的承诺。为什么在调用
setState
时导致错误?如果我的组件不在视图中,为什么允许某个异步任务修改其状态,他们不应该为我检测到吗?这是因为获取数据是一个异步任务。逻辑是这样的:组件装载>调用异步获取>用户更改视图>同时异步获取完成并使用新数据调用setState>响应尝试相应地更新状态,但无法再找到它。React不能也不应该取消您的承诺。为什么在调用
setState
时导致错误?如果我的组件不在视图中,为什么允许某个异步任务修改其状态,他们不应该为我检测到吗?你是说我必须检查是否调用了
componentUnmount
,然后取消该任务。为什么他们不能帮我?知道何时调用
componentUnmount
,为什么他们不能取消任务(或者忽略即将进行的
setState
调用)?为什么我要费心检查。。。我的意思是谁会对更新不在视图中的组件的状态感兴趣?React会破坏该组件,并且在卸载该组件后将不再有render()调用。ComponentWillUnmount向您发出信号,表示您无法再确保该组件正常工作,例如设置状态。请参阅以下讨论:。值得注意的是,Cancelable是处理中间进程卸载的正确方法。您是说我必须检查是否调用了
componentUnmount
,然后取消任务。为什么他们不能帮我?知道何时调用
componentUnmount
,为什么他们不能取消任务(或者忽略即将进行的
setState
调用)?为什么我要费心检查。。。我的意思是谁会对更新不在视图中的组件的状态感兴趣?React会破坏该组件,并且在卸载该组件后将不再有render()调用。ComponentWillUnmount向您发出信号,表示您无法再确保该组件正常工作,例如设置状态。请参阅以下讨论:。值得注意的是,Cancelable是处理中间进程卸载的正确方法。