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
에서 직접 가져와야 합니다.
createRealmContext()
메서드는 지정된 구성이 있는 영역 에 대해 React Context 객체 생성합니다.Context
객체 에는 다음이 포함됩니다.
하위 구성 요소를 감싸고 후크에 대한 액세스 제공하는 컨텍스트 제공자(다른 곳에서는 라고 함) 구성 요소입니다.
RealmProvider
구성된 영역에 액세스하는 다양한 사전 빌드된 후크.
자세한 가이드는 둘 이상의 Realm 노출하기를 참조하세요.
매개변수
realmConfig?: Realm.Configuration
BaseConfiguration 의 모든 속성을 사용할 수 있습니다.
반환
RealmContext
RealmProvider
구성요소와useRealm
,useQuery
및useObject
후크를 포함하는 객체입니다.