@tanstack/react-db
Version:
React integration for @tanstack/db
34 lines (33 loc) • 1.04 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const react = require("react");
const reactStore = require("@tanstack/react-store");
const db = require("@tanstack/db");
function useLiveQuery(queryFn, deps = []) {
const [restart, forceRestart] = react.useState(0);
const compiledQuery = react.useMemo(() => {
const query = queryFn(db.queryBuilder());
const compiled = db.compileQuery(query);
compiled.start();
return compiled;
}, [...deps, restart]);
const state = reactStore.useStore(compiledQuery.results.asStoreMap());
const data = reactStore.useStore(compiledQuery.results.asStoreArray());
react.useEffect(() => {
if (compiledQuery.state === `stopped`) {
forceRestart((count) => {
return count += 1;
});
}
return () => {
compiledQuery.stop();
};
}, [compiledQuery]);
return {
state,
data,
collection: compiledQuery.results
};
}
exports.useLiveQuery = useLiveQuery;
//# sourceMappingURL=useLiveQuery.cjs.map