首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在导航到另一个页面时取消setTimeout?

如何在导航到另一个页面时取消setTimeout?
EN

Stack Overflow用户
提问于 2020-10-16 10:23:47
回答 2查看 772关注 0票数 0

晚上好,请您建议一个解决方案,当用户导航到其他页面(例如,单击其他链接,按浏览器的后退按钮,但不更改到其他选项卡)时取消setTimeout。我尝试过窗口事件"unload",但它似乎不能像预期的那样工作。

我的应用程序是一个正常的倒计时,如果它计数到0,它会自动导航到分配的页面。出于某种目的,我需要禁用这个自动导航,如果用户点击其他链接,而它是计数。非常感谢。

代码语言:javascript
运行
AI代码解释
复制
import React, { useEffect } from 'react';
import {useHistory} from "react-router-dom";

const SucessPurchaseSubmit = () => {
    const history = useHistory();
    const navigateTo = () => history.push("/house-catalog");
    useEffect(() => {
        const time = document.querySelector(".time");
        let count = 10;
        var timer;
        // automatic navigate to full catalog after 10 seconds
        function countToNavigate(){
            clearTimeout(timer);
            time.innerHTML = count;
            if (count === 0) {
                navigateTo();
            }
            count -= 1;
            timer = setTimeout(countToNavigate, 1000)
        }
        countToNavigate();
        window.addEventListener("unload", () => {
            clearTimeout(timer);
        })
    })
    return (
        <section className="success-purchase-submit">
            <h1>Thank you so much for your information</h1>
            <h3>One of our consultants will contact you very shortly</h3>
            <h5>In the mean time, we will back to Full Catalog automatically after:</h5>
            <h5 className="time">10</h5>
        </section>
    );
};

export default SucessPurchaseSubmit;
EN

回答 2

Stack Overflow用户

发布于 2020-10-16 10:34:35

我可能已经找到了你的问题的解决方案。

代码语言:javascript
运行
AI代码解释
复制
const FunctionalComponent = () => {
 React.useEffect(() => {
   return () => {
     console.log("Bye");
   };
 }, []);
 return <h1>Bye, World</h1>;
};

引用自- https://www.twilio.com/blog/react-choose-functional-components

您可以在useEffect()中使用clearInterval()。

useEffect()的工作方式类似于"OG“componentWillUnmount()。一旦重定向到新页面,这里就是clearInterval()的最佳位置。

票数 0
EN

Stack Overflow用户

发布于 2020-10-16 10:35:23

根据https://reactjs.org/docs/hooks-reference.html#cleaning-up-an-effect的说法,您可以从useEffect返回一个函数,以便在卸载组件时进行清理。

因此,在useEffect函数的末尾,您可能可以添加:

代码语言:javascript
运行
AI代码解释
复制
return () => clearTimeout(timer);

要在移除组件时取消超时,请执行以下操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64387341

复制
相关文章
canvas简单线条的绘制
1.绘制线条之前首先进行声明线条开始绘制代码context.beginPath;说明:context是画板中获得的绘画环境上述的是cv
十月梦想
2018/08/29
9580
canvas画布实现矩形的绘制
绘制一个实心矩形cv.fillRect(x,y,width,height)绘制之前声明绘制的实心矩形颜色使用fillStyle
十月梦想
2018/08/29
2.6K0
bootstrap 表格 带边框
<link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css">
用户5760343
2022/01/10
1.1K0
bootstrap 表格 带边框
软件测试|超好用超简单的Python GUI库——tkinter(十四)
我们知道我们可以使用pillow绘制不同形状的图形,但是我们能不能使用tkinter实现这个功能呢,当然可以,tkinter也可以实现图形的绘制,并且可以将绘制的图形添加到我们的GUI中。
霍格沃兹测试开发Muller老师
2023/06/02
9920
巧妙实现带圆角的渐变边框
border-image 是 CSS 规范 CSS Backgrounds and Borders Module Level 3 (最新一版的关于 background 和 border 的官方规范) 新增的一个属性值。
Sb_Coco
2020/02/21
7.1K1
巧妙实现带圆角的渐变边框
IOS – OpenGL ES 绘制线条 GPUImageLineGenerator
GPUImageLineGenerator 属于 GPUImage 图像处理相关,用来处理图片线条效果,shader 源码如下:
猿说编程[Python和C]
2023/03/25
5340
Canvas两点连线及多点连线
使用html5 Canvas绘制直线所需的CanvasRenderingContext2D对象的主要属性和方法(有”()”者为方法)如下:
javascript.shop
2019/09/04
9.4K0
H5-使用canvas绘制
canvas标签用于绘制图画,它是通过js来实现图画的绘制,这里将学习一下其基本用法。 首先,创建一个画布,这样我们就可以在上面进行创作了。
kdyonly
2023/03/03
9240
WPF 绘制对齐像素的清晰显示的线条
发布于 2017-12-12 13:49 更新于 2018-08-13 12:47
walterlv
2018/09/18
1.6K0
WPF 绘制对齐像素的清晰显示的线条
IOS开发 图形绘制,绘制线条,矩形,和垂直和居中绘制文字
假设把上面的方法放入到一个类 DrawUtil 中,我们可以通过 DrawUtil 来调用方法。
张云飞Vir
2020/03/16
1.8K0
用Python绘制棒棒糖图表,真的好看!
此外还可以调整lw、markersize参数,定义线条的粗细及标记的大小,甚至可以绘制两次线条以创建轮廓效果。
咋咋
2021/09/01
1.3K0
用Python绘制棒棒糖图表,真的好看!
canvas知识点
HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. <canvas> 标签只是图形容器,您必须使用脚本来绘制图形。 你可以通过多种方法使用Canva绘制路径,盒、圆、字符以及添加图像。
HUC思梦
2020/09/03
8920
用Python绘制棒棒糖图表,真的好看!
此外还可以调整lw、markersize参数,定义线条的粗细及标记的大小,甚至可以绘制两次线条以创建轮廓效果。
小F
2021/05/17
1.5K0
用Python绘制棒棒糖图表,真的好看!
Canvas网页涂鸦板再次增强版
点击这里 http://qkongtao.cn//file/graffiti.html
不愿意做鱼的小鲸鱼
2022/09/24
1.3K0
Canvas网页涂鸦板再次增强版
flutter画布绘制图片和文字
本节目标: [1]. 了解如何获取 [ui.Image] 对象。 [2]. 将一张图片使用 Canvas 绘制出来。 [3]. 知道如何从图片中取出部分图片绘制到指定矩形域中。 [4]. 了解 Canvas 绘制图集的操作。 [5]. 如何在 Canvas 中绘制文字,并完善坐标系刻度。 ---- 一、图片绘制: image-20201030110334887 绘制图片需要的是 ui.Image,需要异步加载,这里用 loadImageFromAssets 处理。 PaperPainter 接收 u
用户1974410
2022/09/20
2.6K0
flutter画布绘制图片和文字
Python+matplotlib绘制海螺贝壳上美丽的线条
在海洋中的亿万只海螺中,大部分都是右旋螺纹,从底部看的话海螺开口在右边,如下图所示:
Python小屋屋主
2019/05/15
1.5K0
手写原生代码专题 | 简易手写画板(二)
如视频所示,在这个示例中,我们用到了画布 canvas 相关的知识,比如创建画布、画圆形、画直线的基础知识,有了这些基础后,我们就能轻松完成本示例,示例效果如下视频所示。
前端达人
2021/07/16
1.5K0
点击加载更多

相似问题

绘制带边框的线条

12

Java绘制带边框的线条

11

画布中带渐变的线条绘制

122

在画布android中绘制带边框的文本

14

使用画布绘制线条

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档