@zag-js/preact
Version:
The preact wrapper for zag
22 lines (21 loc) • 531 B
JavaScript
// src/track.ts
import { useEffect, useRef } from "preact/hooks";
var useTrack = (deps, effect) => {
const render = useRef(false);
const called = useRef(false);
useEffect(() => {
const mounted = render.current;
const run = mounted && called.current;
if (run) return effect();
called.current = true;
}, [...(deps ?? []).map((d) => typeof d === "function" ? d() : d)]);
useEffect(() => {
render.current = true;
return () => {
render.current = false;
};
}, []);
};
export {
useTrack
};