使用useRealm()钩子时出现以下错误:
错误错误:找不到领域上下文。是否在<RealmProvider/>?
中调用useRealm()
为什么我会得到这个错误,以及如何纠正它?
我已经遵循了React Native by Realm的快速入门,如下所述:https://www.mongodb.com/docs/realm/sdk/react-native/quick-start/
这里是源代码。
App.jsx:
import TestView from './src/modules/sandbox/TestView';
function App() {
return <TestView />;
}
export default App;
字符串
TestView.jsx:
import React from 'react';
import Realm from 'realm';
import { createRealmContext } from '@realm/react';
import TestComponent from './TestComponent';
// Define your object model
class Profile extends Realm.Object {
static schema = {
name: 'Profile',
properties: {
_id: 'objectId',
name: 'string',
},
primaryKey: '_id',
};
}
// Create a configuration object
const realmConfig = {
schema: [Profile],
};
// Create a realm context
const { RealmProvider, useRealm, useObject, useQuery } = createRealmContext(realmConfig);
export default function TestView() {
return (
<RealmProvider>
<TestComponent />
</RealmProvider>
);
}
型
TestComponent.jsx:
import { StyleSheet, Text, View } from 'react-native';
import React from 'react';
import { useRealm } from '@realm/react';
export default function TestComponent() {
const realm = useRealm();
return (
<View style={styles.container}>
<Text>Aloha</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
backgroundColor: 'white',
},
});
型
Realm和RN版本:
"realm": "^11.10.1",
"@realm/react": "^0.5.1",
"react-native": "0.71.11",
型
Android 13:
的数据
iOS 16.4:
的
1条答案
按热度按时间t3irkdon1#
我已经在GitHub上打开了一个与此问题相关的工单(https://github.com/realm/realm-js/issues/6013)。长话短说:文档混乱,将进行更新。以下是对话:
@takemeyer:
@MinisX您必须在应用程序中使用从
createRealmContext
返回的useQuery
。另一种选择是省略createRealmContext
,而是从@realm/react
导入RealmProvider
并实现它:字符串
在
@realm/react
中已经示例化了一个默认的RealmContext,所以只有在创建多个Realm时才真正需要调用createRealmContext
。如果使用Realm,我们将很快更新文档以反映此方法。@MinisX:
@takameyer谢谢你的回应。根据文档,
useQuery
和useRealm
钩子有不同的用途。因此,我不太理解你的第一个建议。https://www.mongodb.com/docs/realm/sdk/react-native/use-realm-react/的
我今天会给予你的第二个建议,并给出反馈。但它也会引起混乱,正如文档所述:
你的= something用户已经定义了,而不是“instead import the RealmProvider from @realm/react“。
@takemeyer:
@MinisX我们正在重新编写该文档,以减少混乱。我建议不要使用
createRealmContext
,除非您需要两个不同的Realm数据库(这并不常见)。只需从
@realm/react
导入RealmProvider
并将其用于应用程序 Package 器。然后,您可以使用直接从@realm/react
导入的useQuery
、useRealm
和useObject
钩子来全局访问您的领域数据库。例如,在您的 Package 器中:
型
在孩子身上:
型
@MinisX:
@takameyer这个作品,谢谢澄清!