UNPKG

@tanstack/react-optimistic

Version:

React hooks for optimistic updates

38 lines (37 loc) 1.07 kB
"use strict"; Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" }); const react = require("react"); const reactStore = require("@tanstack/react-store"); const optimistic = require("@tanstack/optimistic"); function useLiveQuery(queryFn, deps = []) { const [restart, forceRestart] = react.useState(0); const compiledQuery = react.useMemo(() => { const query = queryFn(optimistic.queryBuilder()); const compiled = optimistic.compileQuery(query); compiled.start(); return compiled; }, [...deps, restart]); const state = reactStore.useStore(compiledQuery.results.derivedState); let data; react.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; } }; } exports.useLiveQuery = useLiveQuery; //# sourceMappingURL=useLiveQuery.cjs.map