react-use-precision-timer
Version:
A versatile precision timer hook for React. Doubles as a stopwatch.
22 lines (21 loc) • 951 B
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TimerRenderer = void 0;
const react_1 = __importDefault(require("react"));
const react_sub_unsub_1 = require("react-sub-unsub");
/**
* Renders a timer or stopwatch at regular intervals.
*/
const TimerRenderer = ({ timer, render = (timer) => react_1.default.createElement(react_1.default.Fragment, null, timer.getElapsedRunningTime()), renderRate = 10, }) => {
const [, setRenderTime] = react_1.default.useState(Date.now());
react_1.default.useEffect(() => {
const subs = new react_sub_unsub_1.Subs();
subs.setInterval(() => setRenderTime(new Date().getTime()), renderRate);
return subs.createCleanup();
}, [renderRate]);
return render(timer);
};
exports.TimerRenderer = TimerRenderer;
;