@tanstack/react-optimistic
Version:
React hooks for optimistic updates
38 lines (37 loc) • 956 B
JavaScript
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