UNPKG

@tanstack/react-db

Version:

React integration for @tanstack/db

34 lines (33 loc) 935 B
import { useState, useMemo, useEffect } from "react"; import { useStore } from "@tanstack/react-store"; import { queryBuilder, compileQuery } from "@tanstack/db"; 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.asStoreMap()); const data = useStore(compiledQuery.results.asStoreArray()); useEffect(() => { if (compiledQuery.state === `stopped`) { forceRestart((count) => { return count += 1; }); } return () => { compiledQuery.stop(); }; }, [compiledQuery]); return { state, data, collection: compiledQuery.results }; } export { useLiveQuery }; //# sourceMappingURL=useLiveQuery.js.map