在umi react 纯函数组件中 实现一个参数 在进入该组件 启动计时器 每秒+1 离开组件销毁 定时器
时间: 2024-05-02 17:20:24 浏览: 185
秒表计时器,可以实现计时功能
可以通过 useEffect 钩子函数来实现计时器的启动和销毁。
具体实现如下:
```jsx
import React, { useState, useEffect } from 'react';
function Timer({ seconds }) {
const [count, setCount] = useState(seconds);
useEffect(() => {
const interval = setInterval(() => {
setCount(count => count - 1);
}, 1000);
return () => clearInterval(interval);
}, []);
useEffect(() => {
if (count <= 0) {
clearInterval(interval);
}
}, [count]);
return <div>{count}</div>;
}
export default Timer;
```
在上面的代码中,我们定义了一个 Timer 组件,它接受一个 seconds 参数表示计时器的初始时间。
在组件的状态中,我们使用 useState 钩子来定义一个 count 变量,用于记录当前计时器的剩余时间。
在 useEffect 钩子中,我们使用 setInterval 函数来每秒更新一次 count 变量的值,并返回一个清除计时器的函数,以便在组件销毁时清除计时器。
我们还定义了一个第二个 useEffect 钩子,用于判断计时器是否已经结束,如果结束则清除计时器。
最后,在组件的返回值中,我们将 count 变量渲染到页面中用于展示当前剩余时间。
使用方式如下:
```jsx
import React from 'react';
import Timer from './Timer';
function App() {
return (
<div>
<Timer seconds={10} />
</div>
);
}
export default App;
```
在上面的代码中,我们将 Timer 组件引入到 App 组件中,并传入了一个 seconds 参数,表示计时器的初始时间为 10 秒。
阅读全文