Zum Inhalt springen

React

Die React-Bindings liegen in tapedb/react und nehmen die Queries und Rooms, die ein createClient()-Client zurückgibt. Hooks und normale Aufrufe teilen sich dieselbe Verbindung, denselben Cache und dieselbe Outbox. React 19 ist eine optionale Peer-Dependency; der Core-Entry bleibt React-frei.

import { useBroadcast, useLive, useLivePage, usePresence } from "tapedb/react";
const { data, isLoading } = useLive(
db.task.findMany({ where: { columnId }, orderBy: { position: "asc" } })
);
const feed = useLivePage(db.task.findPage({ orderBy: { id: "desc" }, take: 50 }));
// feed.rows, feed.hasMore, feed.loadMore() — jede geladene Seite bleibt live
const peers = usePresence(db, "board:" + boardId, { name, color });

Ein neues Query-Objekt bei jedem Render ist in Ordnung: Die Subscription folgt dem Key der Query, gleiche Argumente behalten also eine Subscription. useLivePage hält jede geladene Seite live und übersteht Reconnects.

Broadcast hat seinen eigenen Hook:

const send = useBroadcast(db, "board:" + boardId, (message, from) =>
flash(from.userId, message)
);

Der letzte Callback ist immer der aufgerufene, er muss also nicht gememoized werden. send gibt false zurück, während du offline bist.

Siehe Queries & Live-Daten für die Query-API und Dateien, Presence und Broadcast für die Room-APIs.