首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在这个React JS组件中隐藏setTimeout id?

如何在这个React JS组件中隐藏setTimeout id?
EN

Stack Overflow用户
提问于 2021-10-28 03:21:19
回答 4查看 64关注 0票数 0

我在试着做我认为很简单的事情。在提交由GravityForm组件拉入的表单时,我将handleSubmit状态设置为true,然后呈现感谢消息(这一切都很好,我已经删除了URL,但我可以向您保证这一点是正确的)。

当我加载成功消息时,我的问题就出现了。setTimeout函数显示id。有没有一种方法可以停止它显示该id,或者以不同的方式实现这个函数,这意味着它不会显示?

预期的功能是,感谢消息将显示3秒,然后页面将加载到不同的网站。

代码语言:javascript
运行
AI代码解释
复制
import "./form.css";
import React, { Component } from "react";
import GravityForm from "react-gravity-form";
import styled from "styled-components";

export class  Gravity extends Component {

    state = {
        handleSubmit : false,
    }

    successMessage = styled.div`
        display: block;
        color: #fff;
        font-size: 24px;
        text-align: center;
    `;

    render() {
        const { handleSubmit } = this.state;

        if (!handleSubmit) {
            return (
                <GravityForm
                    backendUrl="https://removedurlforclientprivacy.com/wp-json/glamrock/v1/gf/forms"
                    formID="3"
                    onSubmitSuccess={ () => {
                        this.setState({
                            handleSubmit : true,
                        })
                    } }
                    
                />
            );
        } else {
            return (
                <>
                    <this.successMessage>
                        <p>Thanks for entering our competition!<br />If you're our lucky winner, we will let you know.</p>
                    </this.successMessage>
                    { setTimeout(() => window.location.href = 'https://google.co.uk', 3000) }
                </>
            )
            
        }

    }
}

export default Gravity
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-10-28 03:40:50

您看到id的原因是因为setTimeout函数返回id。想象一下,setTimeout()调用被简单地替换为123,这样它看起来就像{ 123 },它当然会显示123的值。

隐藏该值的一种方法是将其转换为要计算的表达式-类似于{ 123 && <> },这样将返回空元素,而不是值本身(显然将123替换为您的setTimeout()函数,如下所示:

代码语言:javascript
运行
AI代码解释
复制
{ setTimeout(() => window.location.href = 'https://google.co.uk', 3000) && <></> }

您还可以使用{ 123 && undefined }或{ 123 && null },这很可能导致根本不返回元素,再次确保用setTimeout()函数替换123。

票数 1
EN

Stack Overflow用户

发布于 2021-10-28 03:34:15

您是否可以尝试这种方式,创建一个函数,您可以设置您的成功的东西,并在您的else条件下调用它

代码语言:javascript
运行
AI代码解释
复制
renderSuccesssMessage = () => {
  setTimeout(() => window.location.href = 'https://google.co.uk', 3000)
  return (
    <this.successMessage>
    <p>Thanks for entering our competition!<br />If you're our lucky winner, we will let you know.</p>
</this.successMessage>
  )
}

并将此函数调用到else条件中

代码语言:javascript
运行
AI代码解释
复制
 else {
        return (
            this.renderSuccessMessage()
        )
        
    }
票数 1
EN

Stack Overflow用户

发布于 2021-10-28 03:31:28

您可以像下面这样更改您的onSubmitSuccess函数,并从else块中删除setTimeout:

代码语言:javascript
运行
AI代码解释
复制
onSubmitSuccess={() => {
                    this.setState({
                        handleSubmit : true,
                    },() => {
                      setTimeout(() => window.location.href = 'https://google.co.uk', 3000)
                    });
                }}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69753194

复制
相关文章
多个扇形元素绕圆旋转
这种效果有很多方案,最后选择了一个比较简单的方案,就是一个position: relative;的 div 。包裹5个position: absolute;的div。 通过旋转,调整5个div的 top 与 left,而产生弧度,并使中心点都指向圆心。 黄色扇形与文字 都是在5个div内部。
拿我格子衫来
2023/10/19
2770
多个扇形元素绕圆旋转
c++ vector删除多个元素方法
转自:https://blog.csdn.net/daofengdeba/article/details/7865229
用户7886150
2021/01/19
2.8K0
如何更改伪元素的样式
在前端开发中我们会经常用到伪元素,有时候需要通过js来修改伪元素的样式,那么有哪几种方式来修改伪元素的样式呢?
挥刀北上
2021/01/27
9.5K0
如何更改伪元素的样式
React技巧之组件中返回多个元素
原文链接:https://bobbyhadz.com/blog/react-return-multiple-elements[1]
chuckQu
2022/08/19
1.1K0
React技巧之组件中返回多个元素
如何将多个参数传递给 React 中的 onChange?
在 React 中,一些 HTML 元素,比如 input 和 textarea,具有 onChange 事件。onChange 事件是一个非常有用、非常常见的事件,用于捕获输入框中的文本变化。有时候,我们需要将多个参数同时传递给 onChange 事件处理函数,在本文中,我们将介绍如何实现这一目标。
网络技术联盟站
2023/06/07
2.8K0
input元素的oninput事件和onchange事件
第二种:获取input元素,然后在元素对象上添加oninput属性,属性值为函数,函数内部为处理事件函数的调用
全栈程序员站长
2022/09/05
3.5K0
JavaScript给元素添加多个class的简单实现
当div 中的class 有多个classname时,它会同时应用这几个class定义的CSS样式,那么应用时的优先级是怎么样的?
浩Coding
2019/08/26
4.3K0
JavaScript给元素添加多个class的简单实现
Vue动画之多个元素或组件的动画效果
        前面我们看的是单个元素的过渡效果,我们看一下多个元素或者组件的过渡
十月梦想
2018/10/09
1.9K0
[转]如何更改远程桌面的侦听端口
版权声明:本文版权归属 © Microsoft 简介 本文介绍如何更改远程桌面的侦听端口。 注意:用于 Mac 的远程桌面连接客户程序仅支持端口 3389。3389 是默认端口。 详细信息 要更改远程桌面的侦听端口,请按照下列步骤。 重要:此部分、 方法或任务包含一些介绍如何修改注册表的步骤。但是,如果不正确地修改了注册表,可能会出现严重的问题。因此,请确保仔细按照下列步骤操作。为增加保护,对其进行修改之前备份注册表。然后,您可以在出现问题时还原注册表。有关如何备份和还原注册表的详细信息,请参见如何备份和还
用户1456517
2019/03/05
3.4K0
php将多个值的数组去除重复元素 转
(adsbygoogle = window.adsbygoogle || []).push({});
双面人
2019/04/10
5.2K0
php将多个值的数组去除重复元素
                                                                            转
seaborn可视化数据框中的多个列元素
seaborn提供了一个快速展示数据库中列元素分布和相互关系的函数,即pairplot函数,该函数会自动选取数据框中值为数字的列元素,通过方阵的形式展现其分布和关系,其中对角线用于展示各个列元素的分布情况,剩余的空间则展示每两个列元素之间的关系,基本用法如下
生信修炼手册
2020/10/19
5.3K0
一日一技:如何用Python遍历多个列表元素的所有组合
在Python中,对于这种情况,有现成的处理方法,那就是 itertools.product计算可迭代对象的笛卡尔积。
青南
2019/06/26
16.1K0
一日一技:如何用Python遍历多个列表元素的所有组合
显示组成一个图的多个元素的名称的分布。
import numpy as np import matplotlib.pyplot as plt from matplotlib.ticker import AutoMinorLocator, MultipleLocator, FuncFormatter np.random.seed(19680801) X = np.linspace(0.5, 3.5, 100) Y1 = 3+np.cos(X) Y2 = 1+np.cos(1+X/0.75)/2 Y3 = np.random.uniform(Y
裴来凡
2022/05/28
7650
显示组成一个图的多个元素的名称的分布。
多个相邻元素切换效果出现边框重叠问题的解决方法
多个相邻按钮切换效果出现边框重叠问题的解决方法 下图所示的是一种常见的切换效果,在实现这种切换效果时,经常会遇到相邻按钮边框重叠的问题(查看demo),有没有好的解决方法呢?
TimothyJia
2023/10/16
4380
多个相邻元素切换效果出现边框重叠问题的解决方法
如何使用多个 kubeconfig 文件,并将它们合并为一个?
Kubernetes(简称 K8s)是一种用于管理容器化应用程序的开源平台,它提供了强大的容器编排、自动扩展和服务发现等功能。在使用 Kubernetes 集群进行应用程序部署和管理时,通常需要与集群进行交互,这就需要使用到 kubeconfig 文件。kubeconfig 是 Kubernetes 的配置文件,用于存储与集群的连接信息和认证凭据。有时候,我们可能需要同时管理多个 Kubernetes 集群,每个集群都有自己的 kubeconfig 文件。本文将详细介绍如何使用多个 kubeconfig 文件,并将它们合并为一个。
网络技术联盟站
2023/06/18
9160
如何使用多个 kubeconfig 文件,并将它们合并为一个?
如何在Ubuntu中安装多个终端以及更改默认终端
终端是任何Linux系统的关键部分。它允许您通过shell访问Linux系统。虽说现在的Linux发行版,比如Ubuntu,CentOS等已经基本上可以采用GUI来完成绝大部分一般性的任务。但是,终端程序对于Linux用户来说仍是必不可少的。
会长君
2023/04/26
4.4K0
如何把一个python列表(有很多个元素)变成一个excel表格的第一列?
前几天在Python最强王者群有个叫【麦当】的粉丝问了一个关于Python如何把一个python列表(有很多个元素)变成一个excel表格的第一列的问题,这里拿出来给大家分享下,一起学习。
Python进阶者
2022/04/12
2.5K0
如何把一个python列表(有很多个元素)变成一个excel表格的第一列?
vue.js中的v-if指令 使用template同时判断多个元素
当同时要控制多个元素(比如多个div,或其他元素)的显示与否时,可以使用vue.js的内置指令template把这多个元素包含起来,如下:
acoolgiser
2019/01/17
7.1K0
css+js 实现一行多个盒子块元素响应式布局
实现一行多个盒子块元素可以在浏览器窗口改变的时候,根据浏览器视口不同的宽度,响应式改变元素的宽且可自动换行,切尽量不在右侧留白。
蓓蕾心晴
2022/11/21
1.3K0
css+js 实现一行多个盒子块元素响应式布局
手把手教你查找字符串中包含的多个元素
问题:如何查找字符串中包含的多个元素。比如某个字符串中包含“宿舍”或“公寓”或“酒店”任何一个,则返回1。
Python进阶者
2022/03/07
1.5K0
手把手教你查找字符串中包含的多个元素

相似问题

如何禁用多个元素的onChange,然后更改,然后在jQuery中启用onChange

12

如何更改多个元素?

70

如何对多个输入元素使用onchange函数?

10

在多个元素上应用onchange事件

24

jquery循环遍历多个元素,同时更改多个元素?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文