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