iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 29
0
Modern Web

為期 30 天的 react 大冒險系列 第 29

react 大冒險-setTimeout setInterval in react -day 24

  • 分享至 

  • xImage
  •  

今天來說明如何在 react 內執行 setTimeout 跟 setInterval

複習概念,在 react 的生命週期中提到,`componentDidMount 是寫 timer 的好地方
react 大冒險-Lifecycle method-day 19

開啟一個 Timer.js
對 state 初始化,設定 初始秒數 initTime = 0

在 componentDidMount 時設定 timeId
incrementTime 將 state.initTime 逐次+1

import React, { Component } from "react";
class Timer extends Component {
	constructor(props) {
		super(props);
		this.state = {
			initTime: 0,
		};
		this.incrementTime = this.incrementTime.bind(this);
		this.stopCounting = this.stopCounting.bind(this);
	}
	// componentDidMount 是設定timer的好地方
	componentDidMount() {
		this.timeId = setInterval(() => {
			this.incrementTime();
		}, 1000);
	}
	incrementTime() {
		this.setState({ initTime: this.state.initTime + 1 });
	}
	stopCounting() {
		clearInterval(this.timeId);
	}

	render() {
		const { initTime } = this.state;
		return (
			<>
				<button onClick={this.stopCounting}>stop counting</button>
				<p>passed {initTime} seconds</p>
			</>
		);
	}
}

export default Timer;

這時候就可以看到隨時間經過,畫面便會產生變化


上一篇
react 大冒險-render props-day 23
下一篇
react 大冒險-一些實用的 package-day 30
系列文
為期 30 天的 react 大冒險30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言