在使用useRealm()挂钩时,我收到以下错误:

错误:找不到领域上下文.您是否在<RealmProvider/>?内调用useRealm()

为什么我会收到这个错误,以及如何纠正它?

我遵循了Reaction Native by领域的快速入门,如下所述: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>
  );
}

加入时间:清华2007年01月25日下午3:33

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

领域和RN版本:

"realm": "^11.10.1",
"@realm/react": "^0.5.1",
"react-native": "0.71.11",

机器人13:

enter image description here

IOS16.4:

enter image description here

推荐答案

我已经在GitHub上打开了一个与此问题相关的罚单(https://github.com/realm/realm-js/issues/6013).长话短说:文档令人困惑,将进行更新.以下是对话内容:

@takemeyer:个个

@MinisX您必须在应用程序中使用从createRealmContext返回的useQuery.另一种 Select 是省略createRealmContext,代之以从@realm/react导入RealmProvider并按如下方式实施:

<RealmProvider schemas={[Person]}>
//...

@realm/react中已经实例化了一个默认的RealmContext,因此只有在创建多个Realm时才真正需要调用createRealmContext.如果使用领域,我们将很快更新文档以反映此方法.

@MinisX:个个

@takameyer感谢你的回复.根据文档,useQueryuseRealm挂钩有不同的用途.因此,我不太理解你的第一个建议.

  • UseQuery()挂钩返回给定类型的领域对象的集合.

  • UseRealm()挂钩返回打开的领域实例.

https://www.mongodb.com/docs/realm/sdk/react-native/use-realm-react/

今天我会试一试你的第二个建议,并给出反馈.但它也会造成混乱,正如文档所说:

  • 一旦您用RealmProvider包装了组件,您的组件及其子组件就可以访问useRealm()、useObject()和useQuery()挂钩.

您的内容是用户定义的,而不是"从@Realm/Reaction导入RealmProvider".

@takemeyer:个个

@MinisX我们现在正在重新编写文档,以减少混淆.我建议不要使用createRealmContext,除非您需要两个不同的领域数据库(这并不常见).

只需从@realm/react导入RealmProvider,并将其用于您的应用程序包装.然后,您可以使用从@realm/react直接导入的useQueryuseRealmuseObject挂钩来拥有对您的领域数据库的全局访问权限.

例如,在您的包装器中:

import { RealmProvider } from "@realm/react";
 
 export default function TestView() {
   return (
     <RealmProvider schemas={[Profile]}>
       <TestComponent />
     </RealmProvider>
   );
 }

在子元素们身上:

import { useQuery } from "@realm/react";

export function ProfileList() {
  const profiles = useQuery(Profile);
  //..render the result
}

@MinisX:个个

@takameyer这行得通,谢谢你的澄清!

Javascript相关问答推荐

如何使用React渲染器放置根dis?

容器如何更改默认插槽中子项的显示?

使用JavaScript在ionic Web应用程序中更新.pane和.view的背景 colored颜色

使用AJX发送表单后,$_Post看起来为空

如何使用侧边滚动按钮具体滚动每4个格?

Next.js(react)使用moment或不使用日期和时间格式

自定义高图中的x轴标签序列

如何在bslib nav_insert之后更改导航标签的CSS类和样式?

并不是所有的iframe都被更换

加载背景图像时同步旋转不显示的问题

WhatsApp Cloud API上载问题:由于MIME类型不正确而导致接收&Quot;INVALID_REQUEST";错误

第二次更新文本输入字段后,Reaction崩溃

未捕获的运行时错误:调度程序为空

在Vercel中部署Next.js项目时获取`ReferenceError:未定义文档`

将Auth0用户对象存储在nextjs类型脚本的Reaction上下文中

如何在FiRestore中的事务中使用getCountFromServer

为什么这个最小Angular 的Licial.dev设置不起作用?

更新文本区域行号

输入数据覆盖JSON文件

当达到高度限制时,如何裁剪图像?使用html和css