RealmProvider(@realm/react)
이 페이지의 내용
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 구성하기
다음 두 가지 방법으로 RealmProvider
를 구성할 수 있습니다.
@realm/react
에서 직접RealmProvider
가져오기createRealmContext()
을 사용하여RealmProvider
을 구성하고 후크를 생성하세요.
이 섹션에서는 @realm/react
에서 직접 가져온 RealmProvider
를 구성하는 방법에 대해 자세히 설명합니다. createRealmContext()
사용에 대한 자세한 내용은 createRealmContext()를 사용하여 컨텍스트 생성을 참조하세요.
객체 모델은 대부분의 영역 구성의 일부입니다. Realm 및 데이터 모델에 대해 자세히 알아보려면 Realm 객체 모델 정의를 참조하세요.
RealmProvider 는 Realm을 하위 구성 요소에 노출하는 래퍼입니다. RealmProvider
에 소품을 전달하여 Realm을 구성합니다.
RealmProvider
이(가) 렌더링되면 Realm이 열립니다. 즉, 렌더링에 실패하면 하위 구성 요소가 Realm에 액세스할 수 없습니다.
RealmProvider
외에도 AppProvider 및 UserProvider를 구성해야 합니다.
기본적으로 Realm은 서버의 모든 데이터를 반환하기 전에 동기화합니다. 백그라운드에서 데이터를 동기화하려면 오프라인 상태에서 동기화된 Realm 구성을 참조하세요.
동기화된 영역을 구성하려면 다음과 같이 하세요.
@realm/react
에서 제공자를 가져옵니다.AppProvider
구성.UserProvider
를 구성하여AppProvider
내에 중첩시킵니다.동기화하려면
RealmProvider
을(를) 구성하여UserProvider
내에 중첩시킵니다.객체 모델을
schema
프롭에 전달합니다.다른 구성 객체 속성을
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에 액세스할 수 없습니다.
동기화되지 않은 영역을 구성하려면 다음과 같이 하세요:
@realm/react
에서RealmProvider
을(를) 가져옵니다.객체 모델을
schema
프롭에 전달합니다.다른 구성 객체 속성을
RealmProvider
에 프롭으로 추가합니다.
import React from 'react'; import {RealmProvider} from '@realm/react'; function AppWrapperLocal() { return ( <RealmProvider schema={[YourObjectModel]}> <RestOfApp /> </RealmProvider> ); }
둘 이상의 Realm 구성
@realm/react
에서 RealmProvider
를 가져오면 해당 공급자는 특정 컨텍스트를 가지며 단일 영역과 연결됩니다. 둘 이상의 영역을 구성해야 하는 경우 createRealmContext()
를 사용하여 각 영역에 대해 새 제공자를 인스턴스화합니다.
useRealm()
, useQuery()
또는 useObject()
를 @realm/react
에서 직접 가져오는 경우 해당 후크는 기본 영역 컨텍스트를 사용합니다. 둘 이상의 영역으로 작업하려면 createRealmContext()
결과에서 새 영역 제공자와 관련 후크를 구조화해야 합니다. 어떤 제공자와 후크를 사용하고 있는지 혼동하지 않도록 네임스페이스 제공자를 지정해야 합니다.
자세한 가이드는 둘 이상의 Realm 노출하기를 참조하세요.
createRealmContext()
에 대한 자세한 내용은 이 페이지의 "createRealmContext()를 사용하여 컨텍스트 만들기"를 참조하세요.
RealmProvider Hooks
useRealm()
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()
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()
useQuery<T>(type, query?, deps?): Realm.Results<T & Realm.Object<T>>
useQuery()
후크는 지정된 유형의 영역 객체 컬렉션을 반환합니다. 다음은 쿼리 결과입니다. 쿼리는 객체 클래스 또는 문자열로 된 클래스 이름일 수 있습니다.
useQuery()
메서드는 컬렉션의 모든 객체에 대한 업데이트를 구독하고 결과가 변경될 때 이를 사용하여 구성 요소를 렌더링합니다.
.filtered()
및 .sorted()
사용하여 쿼리 결과를 필터링하고 정렬할 수 있습니다. 종속성 배열에 변경 사항이 있을 때만 실행되도록 useQuery
의 query
인수에서 이 작업을 수행해야 합니다. 더 많은 예를 보려면 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()를 사용하여 컨텍스트 생성
createRealmContext(realmConfig?): RealmContext
대부분의 경우 둘 이상의 영역을 구성해야 하는 경우에만 createRealmContext()
를 사용합니다. 그렇지 않으면 RealmProvider
및 후크를 @realm/react
에서 직접 가져와야 합니다.
메서드는 React Context createRealmContext()
를 생성합니다. 구성 이 있는 영역 에 대한 객체 입니다.Context
객체 에는 다음이 포함됩니다.
컨텍스트 제공자 (다른
RealmProvider
곳에서는 라고 함) 하위 구성 요소를 감싸고 후크에 대한 액세스를 제공하는 구성 요소입니다.구성된 영역에 액세스하는 다양한 사전 빌드된 후크.
자세한 가이드는 둘 이상의 Realm 노출하기를 참조하세요.
매개변수
realmConfig?: Realm.Configuration
BaseConfiguration 의 모든 속성을 사용할 수 있습니다.
반환
RealmContext
RealmProvider
구성요소와useRealm
,useQuery
및useObject
후크를 포함하는 객체입니다.