The Comments React hooks can be used to fetch, create, and modify threads on the client.
The most important Comments hook is
useThreads
, which retrieves
a list of each thread in the current room. This can be used to render a list of
threads, either using the
default components, or
primitives. Here’s an example of it used
with the default Thread
component.
There are two versions of the
useThreads
hook, the
Suspense version, which we recommend by default, and the
regular version.
The only information Liveblocks stores about users is their user ID, which is
set when authenticating with Liveblocks. With the
useUser
hook, you can fetch a
user’s information from their ID. This is particularly helpful when building
primitive components, as this allows you fetch their name, avatar, and any other
custom data you’ve set.
The user data retrieved is set within the
resolveUsers
function in
your liveblocks.config.ts
file.
There are two versions of the
useUser
hook,
Suspense, which we recommend by default, and
regular.
A number of hooks can be used to mutate comment and thread data, for example:
Some of these hooks are quite simple, such as
useAddReaction
which
adds a reaction to a specified comment.
Whereas others, such as
useCreateThread
, have
more complex behaviour and are designed to work alongside
primitives.
You can find more information on each mutation hook in our API reference pages:
useCreateThread
useDeleteThread
useEditThreadMetadata
useMarkThreadAsResolved
useMarkThreadAsUnresolved
useCreateComment
useEditComment
useDeleteComment
useAddReaction
useRemoveReaction
There’s only one version of these hooks, so it doesn’t make a difference if you
export them from suspense
in your config file or not.
There are two different ways to use the threads and user hooks; with React Suspense, and without it. We recommend using the Suspense versions, as they often result in simpler code.
Using Suspense hooks means that any data retrieved, for example threads
from
useThreads
, will never be undefined
, and your component will never see an
error.
To catch errors and display a loading screen, you can use
ErrorBoundary
and
ClientSideSuspense
.
To use Suspense, make sure you’re exporting your hooks from the suspense
property in your config file.
The regular versions of Liveblocks hooks require you to check for error
and
isLoading
properties. You can then handle these states in the same component.
To use the regular hooks, make sure you’re exporting from the root level in your config file.