Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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
Javascript 反应效果清理_Javascript_Reactjs - Fatal编程技术网

Javascript 反应效果清理

Javascript 反应效果清理,javascript,reactjs,Javascript,Reactjs,我试图理解这个钩子: 钩子看起来像这样: 从'react'导入{useState,useffect,useRef}; //用法 函数App(){ //创建一个ref,添加到要检测外部点击的元素中 const ref=useRef(); //为我们的模式说明 常数[isModalOpen,setModalOpen]=useState(false); //调用钩子传递ref和一个函数来调用外部click useOnClickOutside(ref,()=>setModalOpen(false));

我试图理解这个钩子: 钩子看起来像这样:

从'react'导入{useState,useffect,useRef};
//用法
函数App(){
//创建一个ref,添加到要检测外部点击的元素中
const ref=useRef();
//为我们的模式说明
常数[isModalOpen,setModalOpen]=useState(false);
//调用钩子传递ref和一个函数来调用外部click
useOnClickOutside(ref,()=>setModalOpen(false));
返回(
{伊斯莫达洛彭(
我的useEffect中的清理功能将在什么时候运行

React在组件卸载时执行清理 通过前面的学习,效果会在每次渲染时运行,而不仅仅是一次 这就是为什么React还会清除之前渲染的效果 下次运行效果

简而言之,清理功能在以下情况下运行:

  • 组件卸载
  • 再次运行
    之前,请使用effect
我读过“当它是组件卸载时”,但我不知道这是什么意思,它们是什么意思

它们是指您使用此钩子的组件。在您的情况下,这就是
App
组件

我的useEffect中的清理功能将在什么时候运行

React在组件卸载时执行清理 通过前面的学习,效果会在每次渲染时运行,而不仅仅是一次 这就是为什么React还会清除之前渲染的效果 下次运行效果

简而言之,清理功能在以下情况下运行:

  • 组件卸载
  • 再次运行
    之前,请使用effect
我读过“当它是组件卸载时”,但我不知道这是什么意思,它们是什么意思


它们是指您使用此钩子的组件。在您的情况下,这就是
应用程序
组件。

值得注意的是,这意味着:如果
ref
处理程序
更改,则清除回调将运行,效果函数将再次运行。
ref
不会更改,假设它来自
useRef
,但除非
handler
被记忆化(通过
useCallback
usemo
或类似方式)@T.J.Crowder这一点很好,在
useEffect
钩子的依赖项数组之前的
UseClickOutside
钩子内的一条评论中也提到了这一点。应用程序组件是否曾经卸载过?@Kevin。当您将另一个组件呈现到根容器中时,它可以卸载。当从DOM中删除组件时,它被视为已卸载。值得注意的是,这意味着:如果
ref
handler
更改,则清除回调将运行,效果函数将再次运行。
ref
不会更改,假设它来自
useRef
,但除非
handler
已被记忆(通过
useCallback
usemo
或类似方式)@T.J.Crowder这一点很好,在
useEffect
钩子的依赖项数组之前的
UseClickOutside
钩子内的一条评论中也提到了这一点。应用程序组件是否曾经卸载过?@Kevin。当您将另一个组件呈现到根容器中时,它可以卸载。从DOM中删除组件时,会将其视为已卸载。