Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.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 在useEffect钩子中提到的对延迟事件的反应,它是什么意思?_Javascript_Reactjs_Dom_React Hooks - Fatal编程技术网

Javascript 在useEffect钩子中提到的对延迟事件的反应,它是什么意思?

Javascript 在useEffect钩子中提到的对延迟事件的反应,它是什么意思?,javascript,reactjs,dom,react-hooks,Javascript,Reactjs,Dom,React Hooks,我在读关于useffecthook的文章,他们提到: 在延迟事件期间,传递给useEffect的函数在布局和绘制之后激发 你能解释什么是延迟事件吗?它是DOM核心的一部分还是什么 感谢…以特定的react用例回答问题: 您希望指示渐进式Web应用可安装,并提供自定义的应用内安装流程: 侦听beforeinstallprompt事件 保存beforeinstallprompt事件,以便以后可以使用它触发安装流 提醒用户您的PWA是可安装的,并提供按钮或其他元素来启动应用程序内安装流程 下面是延

我在读关于
useffect
hook的文章,他们提到:

在延迟事件期间,传递给useEffect的函数在布局和绘制之后激发

你能解释什么是延迟事件吗?它是DOM核心的一部分还是什么


感谢…

以特定的react用例回答问题:
您希望指示渐进式Web应用可安装,并提供自定义的应用内安装流程:

  • 侦听beforeinstallprompt事件
  • 保存beforeinstallprompt事件,以便以后可以使用它触发安装流
  • 提醒用户您的PWA是可安装的,并提供按钮或其他元素来启动应用程序内安装流程
下面是延迟:您可能希望在向用户显示安装提示之前等待,这样他们就不会因为正在做的事情而分心。例如,如果用户在签出流程中或正在创建他的帐户,我们会让他们在提示之前完成 他们

这是一个延迟事件的小例子

 let deferredPrompt;

window.addEventListener('beforeinstallprompt', (e) => { 
  // Stash the event so it can be triggered later.
  deferredPrompt = e;
  // Update UI notify the user they can install the PWA
  showInstallPromotion();
});
我们提供了一个用户使用不同的变量单击的UI元素

buttonInstall.addEventListener('click', (e) => {
  // Hide the app provided install promotion
  hideMyInstallPromotion();
  // Show the install prompt
  deferredPrompt.prompt();
  // Wait for the user to respond to the prompt
  deferredPrompt.userChoice.then((choiceResult) => {
    if (choiceResult.outcome === 'accepted') {
      console.log('User accepted the install prompt');
    } else {
      console.log('User dismissed the install prompt');
    }
  })
});

希望这能让雾散一点。

简言之

在延迟事件期间
这只会让您感到困惑:传递给useEffect hook的函数不会立即运行,而是在稍后触发的事件期间运行(精确地说是在绘制之后)

详细信息

React-under-hood与名为Fiber的算法的实现一起工作。简而言之,它改进了React对异步任务和优先级的处理

useEffect创建的效果在内部称为被动效果。基于功能组件中定义顺序的被动效果使用下一种方法彼此链接,并计划在每次绘制(而不是渲染)后运行


@Agney你能在Reactjs land中用一个简单的例子来解释这一点吗?延迟事件是一个JavaScript概念,这就是Reactjs文档没有解释它的原因。如果您查找
javascript延迟事件
,您可以找到许多解释该概念的博客和帖子
// This commit included a passive effect. These do not need to fire until
// after the next paint. Schedule an callback to fire them in an async
// event. To ensure serial execution, the callback will be flushed early if
// we enter rootWithPendingPassiveEffects commit phase before then.