在 React 中单击按钮时停止计时器

Posted

技术标签:

【中文标题】在 React 中单击按钮时停止计时器【英文标题】:Stop timer on button click in React 【发布时间】:2021-03-26 11:12:38 【问题描述】:

我正在开发一个应用程序,我有一个显示当前日期、小时、分钟和秒数的计时器。它每秒递增一次。我想要做的是在单击按钮时停止计时器,但我不确定为什么 clearInterval() 函数不起作用。我的代码是:

class Timer extends React.Component 

    constructor(props) 
        super(props);
        this.state = 
           timer: "",
        ;
    

    componentDidMount() 
        //current time
        setInterval(() => 
            this.setState(
                currentTime : new Date().toLocaleString()
            )
        , 1000)
    


   stopTimer = () => 
        clearInterval(this.state.currentTime)
  

   render() 
        return (
                <div>
                    <h4>Current time: this.state.currentTime</h4>
                    <Button onClick=this.stopTimer>Stop timer</Button>
                </div>
              )
   


【问题讨论】:

这能回答你的问题吗? setInterval in a React app 【参考方案1】:

setInterval() 结果是intervalID,您应该将其用于clearInterval()

this.state = 
  ...
  intervalId: ""
;

...

const intervalId = setInterval(() => 
   ...
, 1000);
this.setState( intervalId );

...

clearInterval(this.state.intervalId);

【讨论】:

【参考方案2】:

您在错误的变量上使用了 clearInterval。你应该这样做。

我正在开发一个应用程序,我有一个显示当前日期、小时、分钟和秒的计时器。它每秒递增一次。我想要做的是在单击按钮时停止计时器,但我不确定为什么 clearInterval() 函数不起作用。我的代码是:

class Timer extends React.Component 

    constructor(props) 
        super(props);
        this.state = 
           timer: "",
           intervalId: ""
        ;
    

    componentDidMount() 
        //current time
       const intervalId =  setInterval(() => 
            this.setState(
                currentTime : new Date().toLocaleString()
            )
        , 1000); 

     this.setState(intervalId)
    


   stopTimer = () => 
     if (this.state.intervalId) 
       clearInterval(this.state.intervelId)
     
  

   render() 
        return (
                <div>
                    <h4>Current time: this.state.currentTime</h4>
                    <Button onClick=this.stopTimer>Stop timer</Button>
                </div>
              )
   


【讨论】:

以上是关于在 React 中单击按钮时停止计时器的主要内容,如果未能解决你的问题,请参考以下文章

如何停止在 C# 类中运行的计时器

管理员单击按钮后为所有用户启动倒数计时器(react、redux、socket.io)

Android 呼叫通知 - 单击时停止计时器

没有获得 JS 功能

帮忙用VC++6.0编写一个简易计时器。当鼠标左键单击时开始计时,鼠标右键单击时停止计时。

mysql值到计时器并不断增加和更新直到单击停止?