UNPKG

@tanstack/react-optimistic

Version:

React hooks for optimistic updates

38 lines (37 loc) 956 B
import { useState, useMemo, useEffect } from "react"; import { useStore } from "@tanstack/react-store"; import { queryBuilder, compileQuery } from "@tanstack/optimistic"; function useLiveQuery(queryFn, deps = []) { const [restart, forceRestart] = useState(0); const compiledQuery = useMemo(() => { const query = queryFn(queryBuilder()); const compiled = compileQuery(query); compiled.start(); return compiled; }, [...deps, restart]); const state = useStore(compiledQuery.results.derivedState); let data; useEffect(() => { if (compiledQuery.state === `stopped`) { forceRestart((count) => { return count += 1; }); } return () => { compiledQuery.stop(); }; }, [compiledQuery]); return { state, get data() { if (!data) { data = Array.from(state.values()); } return data; } }; } export { useLiveQuery }; //# sourceMappingURL=useLiveQuery.js.map