Docs Menu
Docs Home
/ /
Referencia de API

Proveedor del reino (@realm/react)

Tipo de firma
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

    El componente de respaldo para renderizar mientras se abre el reino.

  • closeOnUnmount?: boolean

    El valor predeterminado es true. Si se establece en false, el dominio no se cerrará al desmontar el componente.

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

    Una referencia a la instancia del dominio. Esto es útil si necesita acceder a la instancia del dominio fuera de su alcance.

  • children: React.ReactNode

Puedes configurar un RealmProvider de dos maneras:

  • Importar RealmProvider directamente desde @realm/react

  • Utilice createRealmContext() para configurar un RealmProvider y crear ganchos

Esta sección detalla cómo configurar un RealmProvider importado directamente @realm/react desde. Para obtener información sobre el uso createRealmContext() de, consulte Crear contexto con createRealmContext().

Los modelos de objetos forman parte de la mayoría de las configuraciones de dominio. Para obtener más información sobre dominios y modelos de datos, consulte Definir un modelo de objetos de dominio.

RealmProvider es un contenedor que expone un dominio a sus componentes secundarios. El dominio se configura pasando RealmProvider propiedades a.

Al renderizar RealmProvider, se abre el dominio. Esto significa que los componentes secundarios no pueden acceder al dominio si falla el renderizado.

Además RealmProvider de, también debe configurar AppProvider y 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.

Para configurar un reino sincronizado:

  1. Importar proveedores desde @realm/react.

  2. Configurar AppProvider.

  3. Configure UserProvider y anídelo dentro de AppProvider.

  4. Configure RealmProvider para sincronizar y anídelo dentro de UserProvider.

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

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

Debe configurar una suscripción de sincronización. El siguiente ejemplo utiliza una suscripción inicial, pero también puede configurar suscripciones en RealmProvider componentes secundarios.

Debes anidar proveedores como en el siguiente ejemplo:

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>
);
}

Para obtener más información sobre cómo configurar un reino sincronizado, consulte Configurar un reino sincronizado.

RealmProvider es un contenedor que expone un dominio a sus componentes secundarios. El dominio se configura pasando RealmProvider propiedades a.

Al renderizar RealmProvider, se abre el dominio. Esto significa que los componentes secundarios no pueden acceder al dominio si falla el renderizado.

Para configurar un reino no sincronizado:

  1. Importar RealmProvider desde @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.

Si importa useRealm(), useQuery() o useObject() directamente desde @realm/react, esos ganchos usan el contexto de dominio predeterminado. Para trabajar con más de un dominio, debe desestructurar un nuevo proveedor de dominio y sus ganchos asociados a partir del resultado de createRealmContext(). Debe usar proveedores de espacios de nombres para evitar confusiones sobre con qué proveedor y ganchos está trabajando.

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

Para obtener detalles sobre createRealmContext(), consulte "Crear contexto con createRealmContext()" en esta página.

Tipo de firma
useRealm(): Realm

El gancho useRealm() devuelve una instancia de realm abierta. Esta instancia te da acceso a los métodos y propiedades de realm. Por ejemplo, puedes llamar a realm.write() para añadir un objeto realm a tu realm.

Para obtener más información sobre cómo modificar los datos de Realm, consulte Transacciones de escritura.

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 Devuelve una instancia de dominio. Este es el dominio creado por el padre del gancho, RealmProvider.

Tipo de firma
useObject<T>(type, primaryKey): T & Realm.Object<T> | null

El useObject() gancho devuelve un objeto Realm para una clave primaria dada. Puedes pasar una clase de objeto o el nombre de la clase como una cadena y la clave primaria.

El método useObject() devuelve nulo si el objeto no existe o se ha eliminado. El gancho se suscribirá automáticamente a las actualizaciones y volverá a renderizar el componente con él ante cualquier cambio en el objeto.

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] La clave principal del objeto deseado.

Devuelve

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

Tipo de firma
useQuery<T>(type, query?, deps?): Realm.Results<T & Realm.Object<T>>

El gancho useQuery() devuelve una colección de objetos de dominio de un tipo determinado. Estos son los resultados de la consulta. Una consulta puede ser una clase de objeto o el nombre de la clase como una cadena.

El método useQuery() se suscribe a las actualizaciones de cualquier objeto de la colección y vuelve a renderizar el componente usándolo 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> Una función de consulta que permite filtrar y ordenar los resultados. Se basa en useCallback para memorizar la función de consulta.

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

Devuelve

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

Tipo de firma
createRealmContext(realmConfig?): RealmContext

Generalmente, solo usarás createRealmContext() si necesitas configurar más de un dominio. De lo contrario, debes importar RealmProvider y los ganchos directamente desde @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:

  • Un componente proveedor de contexto (denominado en otro RealmProvider lugar) que envuelve a los componentes secundarios y les proporciona acceso a ganchos.

  • Varios ganchos prediseñados que acceden al reino configurado.

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 Un objeto que contiene un componente RealmProvider y los ganchos useRealm, useQuery y useObject.

Volver

Referencia de API

En esta página