Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
Referencia de API

RealmProvider (@realm/react)

Type signature
RealmProvider(props, context?): null | ReactElement<any, any>

Componentes anidados dentro RealmProvider puede acceder al reino configurado y utilizar los ganchos RealmProvider.

Todas las propiedades de BaseConfiguration se puede pasar como accesorios.

RealmProvider tiene más propiedades que definen su comportamiento:

  • fallback?: React.ComponentType<unknown> | React.ReactElement | null | undefined

    The fallback component to render while the Realm is opening.

  • closeOnUnmount?: boolean

    Default is true. If set to false, realm will not close when the component unmounts.

  • realmRef?: React.MutableRefObject<Realm | null>

    Una referencia a la instancia Realm. Esto es útil si necesitas acceder a la instancia Realm fuera del ámbito del realm.

  • children: React.ReactNode

You can configure a RealmProvider in two ways:

  • Import RealmProvider directly from @realm/react

  • Use createRealmContext() to configure a RealmProvider and create hooks

Esta sección detalla cómo configurar un RealmProvider importado directamente de @realm/react. Para información sobre cómo usar createRealmContext(), consulta Create Context with createRealmContext().

Object models are part of most realm configurations. To learn more about Realm and data models, refer to Define a Realm Object Model.

RealmProvider es un contenedor que expone un realm a sus componentes secundarios. Se configura el realm pasando props a RealmProvider.

Cuando RealmProvider se renderiza, se abre el realm. Esto significa que los componentes secundarios no pueden acceder al realm si el renderizado falla.

In addition to RealmProvider, you also need to configure AppProvider and UserProvider.

Por defecto, Realm sincroniza todos los datos del servidor antes de devolver cualquier dato. If you want to sincronizar data in the segundo plano, read Cómo configurar un Realm sincronizado mientras estás desconectado.

To configure a synced realm:

  1. Import providers from @realm/react.

  2. Configurar AppProvider.

  3. Configure UserProvider and nest it within AppProvider.

  4. Configure RealmProvider for sync and nest it within UserProvider.

  5. Pase sus modelos de objetos a la propiedad schema.

  6. Agregue otras propiedades de Objeto de configuración como props a RealmProvider.

You must set up a sync subscription. The example below uses an initial subscription, but you can also set up subscriptions in RealmProvider child components.

You must nest providers as in the following example:

import React from 'react';
import {AppProvider, UserProvider, RealmProvider} from '@realm/react';
function AppWrapperSync() {
return (
<AppProvider id={APP_ID}>
<UserProvider fallback={LogIn}>
<RealmProvider
schema={[YourObjectModel]}
sync={{
flexible: true,
initialSubscriptions: {
update(subs, realm) {
subs.add(realm.objects(YourObjectModel));
},
},
}}>
<RestOfApp />
</RealmProvider>
</UserProvider>
</AppProvider>
);
}

For more information about configuring a synced realm, refer to Configure a Synced Realm.

RealmProvider es un contenedor que expone un realm a sus componentes secundarios. Se configura el realm pasando props a RealmProvider.

Cuando RealmProvider se renderiza, se abre el realm. Esto significa que los componentes secundarios no pueden acceder al realm si el renderizado falla.

Para configurar un reino no sincronizado:

  1. Import RealmProvider from @realm/react.

  2. Pase sus modelos de objetos a la propiedad schema.

  3. Agregue otras propiedades de Objeto de configuración como props a RealmProvider.

import React from 'react';
import {RealmProvider} from '@realm/react';
function AppWrapperLocal() {
return (
<RealmProvider schema={[YourObjectModel]}>
<RestOfApp />
</RealmProvider>
);
}

Al importar RealmProvider desde @realm/react, ese proveedor tiene un contexto específico y está asociado a un solo dominio. Si necesita configurar más de un dominio, use createRealmContext() para instanciar un nuevo proveedor para cada dominio.

If you import useRealm(), useQuery(), or useObject() directly from @realm/react, those hooks use the default realm context. To work with more than one realm, you need to destructure a new realm Provider and its associated hooks from the result of createRealmContext(). You should namespace providers to avoid confusion about which Provider and hooks you're working with.

Para una guía detallada, consulte Expose More Than One Realm.

For details about createRealmContext(), refer to "Create Context with createRealmContext()" on this page.

Type signature
useRealm(): Realm

The useRealm() hook returns an opened realm instance. The realm instance gives you access to realm methods and properties. For example, you can call realm.write() to add a realm object to your realm.

To learn more about modifying Realm data, refer to Write Transactions.

const CreatePersonInput = () => {
const [name, setName] = useState('');
const realm = useRealm();
const handleAddPerson = () => {
realm.write(() => {
realm.create('Person', {_id: PERSON_ID, name: name, age: 25});
});
};
return (
<>
<TextInput value={name} onChangeText={setName} />
<Button
onPress={() => handleAddPerson()}
title='Add Person'
/>
</>
);
};

Devuelve

  • Realm Retorna una instancia Realm. Este es el realm creado por el parent del hook, RealmProvider.

Type signature
useObject<T>(type, primaryKey): T & Realm.Object<T> | null

El hook useObject() retorna un objeto Realm para una llave primaria. Puedes pasar una clase de objeto o el nombre de la clase como un string y la llave primaria.

The useObject() method returns null if the object doesn't exist or you have deleted it. The hook will automatically subscribe to updates and rerender the component using the hook on any change to the object.

const TaskItem = ({_id}: {_id: number}) => {
const myTask = useObject(Task, _id);
return (
<View>
{myTask ? (
<Text>
{myTask.name} is a task with the priority of: {myTask.priority}
</Text>
) : null}
</View>
);
};

Parámetros

  • type: string Una cadena que coincide con el nombre de clase de su modelo de objeto o una referencia a una clase que extiende Realm.Object.

  • primaryKey: T[keyof T] The primary key of the desired object.

Devuelve

  • Realm.Object | null Un objeto de reino o null si no se encuentra ningún objeto.

Type signature
useQuery<T>(type, query?, deps?): Realm.Results<T & Realm.Object<T>>

The useQuery() hook returns a collection of realm objects of a given type. These are the results of your query. A query can be an object class or the class name as a string.

El método useQuery() se suscribe a las actualizaciones de cualquier objetos en la colección y vuelve a renderizar el componente que lo utiliza ante cualquier cambio en los resultados.

Puedes usar .filtered() y .sorted() para filtrar y ordenar los resultados de tus query. Debes hacer esto en el argumento query de useQuery para que solo se ejecuten cuando haya cambios en el arreglo de dependencias. Para más ejemplos, consulta la CRUD - Lectura docs.

const TaskList = () => {
const [priority, setPriority] = useState(4);
// filter for tasks with a high priority
const highPriorityTasks = useQuery(
Task,
tasks => {
return tasks.filtered('priority >= $0', priority);
},
[priority],
);
// filter for tasks that have just-started or short-running progress
const lowProgressTasks = useQuery(Task, tasks => {
return tasks.filtered(
'$0 <= progressMinutes && progressMinutes < $1',
1,
10,
);
});
return (
<>
<Text>Your high priority tasks:</Text>
{highPriorityTasks.map(taskItem => {
return <Text>{taskItem.name}</Text>;
})}
<Text>Your tasks without much progress:</Text>
{lowProgressTasks.map(taskItem => {
return <Text>{taskItem.name}</Text>;
})}
</>
);
};

Parámetros

  • type: string Una cadena que coincide con el nombre de clase de su modelo de objeto o una referencia a una clase que extiende Realm.Object.

  • query?: QueryCallback<T> A query function that can filter and sort query results. Builds on useCallback to memoize the query function.

  • deps?: DependencyList Una lista de dependencias de funciones de query que se utiliza para memizar la función de query.

Devuelve

  • Realm.Results<T> Un objeto de reino o null si no se encuentra ningún objeto.

Type signature
createRealmContext(realmConfig?): RealmContext

Most of the time, you will only use createRealmContext() if you need to configure more than one realm. Otherwise, you should import RealmProvider and hooks directly from @realm/react.

El createRealmContext() método crea un contexto de ReactObjeto para un dominio con una configuración determinada. El Context objeto contiene lo siguiente:

  • A Context Provider (referred to as RealmProvider elsewhere) component that wraps around child components and provides them with access to hooks.

  • Various prebuilt Hooks that access the configured realm.

Para una guía detallada, consulte Expose More Than One Realm.

Parámetros

  • realmConfig?: Realm.Configuration Se pueden utilizar todas las propiedades de BaseConfiguration.

Devuelve

  • RealmContext An object containing a RealmProvider component, and the useRealm, useQuery and useObject hooks.

Volver

Referencia de API

En esta página