React
Eén socket, één cache, één outbox
Section titled “Eén socket, één cache, één outbox”De React-bindings staan in tapedb/react en nemen de queries en rooms die een createClient()-client teruggeeft. Hooks en gewone aanroepen delen dezelfde verbinding, cache en outbox. React 19 is een optionele peer-dependency; de core-entry blijft React-vrij.
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() — elke geladen pagina blijft live
const peers = usePresence(db, "board:" + boardId, { name, color });Een nieuw query-object bij elke render is prima: de subscription volgt de key van de query, dus gelijke argumenten houden één subscription. useLivePage houdt elke geladen pagina live en overleeft reconnects.
Broadcast heeft zijn eigen hook:
const send = useBroadcast(db, "board:" + boardId, (message, from) => flash(from.userId, message));De laatste callback is altijd degene die wordt aangeroepen, dus hij hoeft niet gememoïseerd te worden. send geeft false terug terwijl je offline bent.
Zie Queries & live data voor de query-API en Bestanden, presence en broadcast voor de room-API’s.