Docs Menu
Docs Home
/ /
Atlas Device SDK
/ /

RealmProvider(@realm/react)

이 페이지의 내용

  • 프롭
  • RealmProvider로 Realm 구성하기
  • 둘 이상의 Realm 구성
  • RealmProvider Hooks
  • useRealm()
  • useObject()
  • useQuery()
  • createRealmContext()를 사용하여 컨텍스트 생성
서명 입력
RealmProvider(props, context?): null | ReactElement<any, any>

RealmProvider 내에 중첩된 구성요소는 구성된 영역에 액세스하고 RealmProvider 후크를 사용할 수 있습니다.

BaseConfiguration 의 모든 속성은 프롭으로 전달할 수 있습니다.

RealmProvider 동작을 정의하는 더 많은 프롭이 있습니다.

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

    Realm이 열리는 동안 렌더링할 폴백 컴포넌트입니다.

  • closeOnUnmount?: boolean

    기본값은 true입니다. false로 설정하면 구성요소가 마운트 해제될 때 영역이 닫히지 않습니다.

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

    영역 인스턴스에 대한 참조입니다. 이는 영역 범위 외부의 영역 인스턴스에 액세스해야 하는 경우 유용합니다.

  • children: React.ReactNode

다음 두 가지 방법으로 RealmProvider를 구성할 수 있습니다.

  • @realm/react에서 직접 RealmProvider 가져오기

  • createRealmContext()을 사용하여 RealmProvider을 구성하고 후크를 생성하세요.

이 섹션에서는 @realm/react 에서 직접 가져온 RealmProvider 를 구성하는 방법에 대해 자세히 설명합니다. createRealmContext() 사용에 대한 자세한 내용은 createRealmContext()를 사용하여 컨텍스트 생성을 참조하세요.

객체 모델은 대부분의 영역 구성의 일부입니다. Realm 및 데이터 모델에 대해 자세히 알아보려면 Realm 객체 모델 정의를 참조하세요.

RealmProvider 는 Realm을 하위 구성 요소에 노출하는 래퍼입니다. RealmProvider 에 소품을 전달하여 Realm을 구성합니다.

RealmProvider 이(가) 렌더링되면 Realm이 열립니다. 즉, 렌더링에 실패하면 하위 구성 요소가 Realm에 액세스할 수 없습니다.

RealmProvider 외에도 AppProviderUserProvider를 구성해야 합니다.

기본적으로 Realm은 서버의 모든 데이터를 반환하기 전에 동기화합니다. 백그라운드에서 데이터를 동기화하려면 오프라인 상태에서 동기화된 Realm 구성을 참조하세요.

동기화된 영역을 구성하려면 다음과 같이 하세요.

  1. @realm/react에서 제공자를 가져옵니다.

  2. AppProvider 구성.

  3. UserProvider를 구성하여 AppProvider 내에 중첩시킵니다.

  4. 동기화하려면 RealmProvider을(를) 구성하여 UserProvider 내에 중첩시킵니다.

  5. 객체 모델을 schema 프롭에 전달합니다.

  6. 다른 구성 객체 속성을 RealmProvider 에 프롭으로 추가합니다.

동기화 구독을 설정해야 합니다. 아래 예에서는 초기 구독을 사용하지만 RealmProvider 하위 구성요소에서 구독을 설정할 수도 있습니다.

다음 예시에서와 같이 제공자를 중첩해야 합니다.

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

동기화된 영역 구성에 대한 자세한 내용은 동기화된 영역 구성을 참조하세요.

RealmProvider 는 Realm을 하위 구성 요소에 노출하는 래퍼입니다. RealmProvider 에 소품을 전달하여 Realm을 구성합니다.

RealmProvider 이(가) 렌더링되면 Realm이 열립니다. 즉, 렌더링에 실패하면 하위 구성 요소가 Realm에 액세스할 수 없습니다.

동기화되지 않은 영역을 구성하려면 다음과 같이 하세요:

  1. @realm/react에서 RealmProvider을(를) 가져옵니다.

  2. 객체 모델을 schema 프롭에 전달합니다.

  3. 다른 구성 객체 속성을 RealmProvider 에 프롭으로 추가합니다.

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

@realm/react에서 RealmProvider를 가져오면 해당 공급자는 특정 컨텍스트를 가지며 단일 영역과 연결됩니다. 둘 이상의 영역을 구성해야 하는 경우 createRealmContext()를 사용하여 각 영역에 대해 새 제공자를 인스턴스화합니다.

useRealm(), useQuery() 또는 useObject()@realm/react에서 직접 가져오는 경우 해당 후크는 기본 영역 컨텍스트를 사용합니다. 둘 이상의 영역으로 작업하려면 createRealmContext() 결과에서 새 영역 제공자와 관련 후크를 구조화해야 합니다. 어떤 제공자와 후크를 사용하고 있는지 혼동하지 않도록 네임스페이스 제공자를 지정해야 합니다.

자세한 가이드는 둘 이상의 Realm 노출하기를 참조하세요.

createRealmContext()에 대한 자세한 내용은 이 페이지의 "createRealmContext()를 사용하여 컨텍스트 만들기"를 참조하세요.

서명 입력
useRealm(): Realm

useRealm() 훅은 열린 영역 인스턴스를 반환합니다. 영역 인스턴스를 사용하면 영역 메서드와 프로퍼티에 액세스할 수 있습니다. 예를 들어 realm.write()을 호출하여 영역 객체를 영역에 추가할 수 있습니다.

Realm 데이터 수정에 대한 자세한 내용은 쓰기 트랜잭션(write transaction)을 참조하십시오.

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

반환

  • Realm 영역 인스턴스를 반환합니다. 이것은 후크의 부모인 RealmProvider이 만든 영역입니다.

서명 입력
useObject<T>(type, primaryKey): T & Realm.Object<T> | null

useObject() 훅은 주어진 기본 키에 대한 Realm 객체를 반환합니다. 객체 클래스 또는 클래스 이름을 문자열과 기본 키로 전달할 수 있습니다.

useObject() 메서드는 객체가 없거나 객체를 삭제한 경우 null을 반환합니다. 후크는 자동으로 업데이트를 구독하고 객체에 대한 변경 사항에 대해 후크를 사용하여 구성 요소를 다시 렌더링합니다.

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

매개변수

  • type: string 객체 모델의 클래스 이름과 일치하는 문자열 또는 Realm.Object를확장하는 클래스에 대한 참조입니다.

  • primaryKey: T[keyof T] 원하는 객체의 기본 키.

반환

  • Realm.Object | null 객체를 찾을 수 없는 경우 Realm 객체 또는 null입니다.

서명 입력
useQuery<T>(type, query?, deps?): Realm.Results<T & Realm.Object<T>>

useQuery() 후크는 지정된 유형의 영역 객체 컬렉션을 반환합니다. 다음은 쿼리 결과입니다. 쿼리는 객체 클래스 또는 문자열로 된 클래스 이름일 수 있습니다.

useQuery() 메서드는 컬렉션의 모든 객체에 대한 업데이트를 구독하고 결과가 변경될 때 이를 사용하여 구성 요소를 렌더링합니다.

.filtered().sorted() 사용하여 쿼리 결과를 필터링하고 정렬할 수 있습니다. 종속성 배열에 변경 사항이 있을 때만 실행되도록 useQueryquery 인수에서 이 작업을 수행해야 합니다. 더 많은 예를 보려면 CRUD - 읽기 문서를 참조하세요.

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

매개변수

  • type: string 객체 모델의 클래스 이름과 일치하는 문자열 또는 Realm.Object를확장하는 클래스에 대한 참조입니다.

  • query?: QueryCallback<T> 쿼리 결과를 필터링하고 정렬할 수 있는 쿼리 함수입니다. useCallback을 빌드하여 쿼리 함수를 메모합니다.

  • deps?: DependencyList 쿼리 함수를 메모하는 데 사용되는 쿼리 함수 종속성 목록입니다.

반환

  • Realm.Results<T> 객체를 찾을 수 없는 경우 Realm 객체 또는 null입니다.

서명 입력
createRealmContext(realmConfig?): RealmContext

대부분의 경우 둘 이상의 영역을 구성해야 하는 경우에만 createRealmContext()를 사용합니다. 그렇지 않으면 RealmProvider 및 후크를 @realm/react에서 직접 가져와야 합니다.

메서드는 React Context createRealmContext()생성합니다. 구성 이 있는 영역 에 대한 객체 입니다.Context 객체 에는 다음이 포함됩니다.

  • 컨텍스트 제공자 (다른 RealmProvider 곳에서는 라고 함) 하위 구성 요소를 감싸고 후크에 대한 액세스를 제공하는 구성 요소입니다.

  • 구성된 영역에 액세스하는 다양한 사전 빌드된 후크.

자세한 가이드는 둘 이상의 Realm 노출하기를 참조하세요.

매개변수

  • realmConfig?: Realm.Configuration BaseConfiguration 의 모든 속성을 사용할 수 있습니다.

반환

  • RealmContext RealmProvider 구성요소와 useRealm, useQueryuseObject 후크를 포함하는 객체입니다.

돌아가기

API 참조