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 { Filter, parseId, useDatabase, useQuery, useSpaces,} from '@dxos/react-client/echo';
export const App = () => { // Usually space IDs are in the URL like in params.spaceId. const { spaceId } = parseId('<space_id_param_goes_here>'); const _space1 = useDatabase(spaceId);
// Get all spaces. const spaces = useSpaces(); const space2 = spaces.at(0);
// Get objects from the space as an array of JS objects. const objects = useQuery(space2?.db, Filter.everything());
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.