check out my explanatory blog post here
a react hook for creating countdown timers with moment.js
npm install --save moment
npm install --save use-moment-countdown
import React from "react";
import { useCountdown } from "use-moment-countdown";
const App = () => {
const { start, time } = useCountdown({ m: 10 });
return <div onClick={start}>{time.format("hh:mm:ss")}</div>;
};
export default App;
import React from "react";
import { useCountdown } from "use-moment-countdown";
const App = () => {
const { start, time } = useCountdown({ h: 1 });
return <div onClick={start}>{time.format("hh:mm:ss")}</div>;
};
export default App;
import React from "react";
import { useCountdown } from "use-moment-countdown";
const App = () => {
const { start, time } = useCountdown({ s: 30 });
return <div onClick={start}>{time.format("hh:mm:ss")}</div>;
};
export default App;
import React from "react";
import { useCountdown } from "use-moment-countdown";
const App = () => {
const { start, time } = useCountdown({ h: 1, m: 20, s: 30 });
return <div onClick={start}>{time.format("hh:mm:ss")}</div>;
};
export default App;
import React from "react";
import { useCountdown } from "use-moment-countdown";
const App = () => {
const { start, time } = useCountdown({ s: 30 }, {recurring: true});
return <div onClick={start}>{time.format("hh:mm:ss")}</div>;
};
export default App;
import React from "react";
import { useCountdown } from "use-moment-countdown";
const App = () => {
const myOnDoneCallback = () => alert("Your timer has finished!")
const { start, time } = useCountdown({ s: 30 }, {onDone: myOnDoneCallback});
return <div onClick={start}>{time.format("hh:mm:ss")}</div>;
};
export default App;
This hook is created using create-react-hook.