Ga naar inhoud

React

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.