反应间隔在后台运行

编程入门 行业动态 更新时间:2024-10-13 12:24:46

反应<a href=https://www.elefans.com/category/jswz/34/1769353.html style=间隔在后台运行"/>

反应间隔在后台运行

我在任何地方都找不到我的问题的答案。

长话短说,我有一个Web应用程序(MERN堆栈),我想保持周期性地定期从前端(反应)向后端(节点)发出请求[即使组件取消安装或用户关闭页面,也是如此。

当前,这是我的代码,如果我在那个特定页面/路由中,它可以正常工作。但如果我关闭页面并返回,它将重置间隔。

let updateCycle; // to make sure there is only 1 interval useEffect( () => { if (!updateCycle) updateCycle = setInterval(() => { myFunction() // calling the function }, 10 * 60 * 1000); // every 10 mins },[myFunction])

所以我该怎么做?还是我必须将整个东西移到后端?
回答如下:您需要的是该钩子的清理功能

基本上是useEffect挂钩可以返回一个在清理该挂钩时将被调用的函数。

所以您的代码现在必须是:

let updateCycle useEffect(() => { updateCycle = setInterval(myFunction, 10 * 60 * 1000) // Set a timer as a side effect return () => clearInterval(updateCycle) // Here is the cleanup function: we take down the timer },[myFunction])

不再需要副作用时,React基本上将调用清除函数。

也就是说,它将在componentUnMount上调用它,或者恰在重新调用useEffect基本函数之前(当myFunction指针改变并导致效果刷新时)

如果需要始终运行的功能,请将其移至始终安装的组件上!我不建议在组件消失时留有副作用,因为这是您在应用程序中造成内存泄漏并难以重现错误的方式。

顺便说一句,在用户关闭页面时保持任何类型的代码运行都是不可能的。也许您在想错方法了?

更多推荐

反应间隔在后台运行

本文发布于:2024-05-06 22:25:43,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1753904.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:间隔   后台

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!