Skip to content

React API

Spaces

A space is an instance of an ECHO database which can be replicated by a number of peers.

This section describes how to create, join, and invite peers to ECHO Spaces in react.

Creating spaces

To create a space, call the client.spaces.create() API:

import React from 'react';
import { createRoot } from 'react-dom/client';
import { ClientProvider, useClient } from '@dxos/react-client';
export const App = () => {
const client = useClient();
return (
<button
onClick={async () => {
await client.spaces.create();
}}
></button>
);
};
const root = createRoot(document.getElementById('root')!);
root.render(
<ClientProvider>
<App />
</ClientProvider>,
);

Obtaining a Space reactively

These hooks are available from package @dxos/react-client and re-render reactively.

import React from 'react';
import { createRoot } from 'react-dom/client';
import { ClientProvider } from '@dxos/react-client';
import {
type Space,
useQuery,
useSpace,
useSpaces,
} from '@dxos/react-client/echo';
export const App = () => {
// Usually space IDs are in the URL like in params.spaceKey.
const _space1 = useSpace('<space_key_goes_here>');
// Get all spaces.
const spaces = useSpaces();
const space2: Space | undefined = spaces[0]; // Spaces may be an empty list.
// Get objects from the space as an array of JS objects.
const objects = useQuery(space2);
return <>{objects.length}</>;
};
const root = createRoot(document.getElementById('root')!);
root.render(
<ClientProvider>
<App />
</ClientProvider>,
);

Joining spaces

See the platform overview describing the general process of joining peers to a space.

See a more detailed example in the Tasks application sample.