1 | import { useState } from "react";
|
2 | import useInterval from "./useInterval";
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 | export default function useCountdown(duration = 60) {
|
10 | const DEFAULT = "获取验证码";
|
11 | const [text, setText] = useState(DEFAULT);
|
12 | const [second, setSecond] = useState(duration);
|
13 | const running = second != duration;
|
14 |
|
15 | const start = () => setSecond(v => v - 1);
|
16 |
|
17 | useInterval(
|
18 | () => {
|
19 | if (second === 0) {
|
20 | setSecond(duration);
|
21 | setText(DEFAULT);
|
22 | return;
|
23 | }
|
24 | setSecond(v => v - 1);
|
25 | setText(`${second}秒后重新获取`);
|
26 | },
|
27 | second == duration ? null : 1000
|
28 | );
|
29 |
|
30 | return [text, running, start];
|
31 | }
|