javascript “未找到领域上下文,你在a中调用useRealm()了吗< RealmProvider/>?”

mspsb9vt  于 2023-08-02  发布在  Java
关注(0)|答案(1)|浏览(101)

我正在尝试在React Native应用上配置Realm。这是我使用RealmProvider的初始组件:

const Stack = createNativeStackNavigator();

const defaultPathLocalRealm = createRealmContext({
   schema: [Profile]
});

const {RealmProvider} = defaultPathLocalRealm;

function App(): JSX.Element {

 return (

 <AppProvider id={'testmongo-lvvnx'}>
  <UserProvider fallback={Login}>
        <RealmProvider sync={{flexible: true, onError: console.error}}>
          <NavigationContainer>
              <Stack.Navigator>
                  <Stack.Screen name='SplashScreen' component={SplashScreen}/>
                  <Stack.Screen name='Login' component={Login}/>
                  <Stack.Screen name='ProfileScreen' component={ProfileScreen}/>
              </Stack.Navigator>
          </NavigationContainer>
        </RealmProvider>
  </UserProvider>
 </AppProvider>

 );
}

export default App;

字符串
问题是,当我在ProfileScreen上调用useRealm()时,得到以下错误:
找不到领域上下文。你在a中调用useRealm()了吗?
ProfileScreen

const ProfileScreen = () => {
const realm = useRealm()

const app = useApp()

const save = async () => {
    try {

        realm.write(() => {
          const res = realm.create('Profile', {_id: 'klsdfds7fsdfhgfhfg8ysdfh', name: 'Besart', email: "besart.haxhidema@gmail.com"})

          console.log(res)
        })
    } catch (error) {
      console.log(error)
    }
}

const logout = () => {
    app.currentUser?.logOut()
}

return(
    <View>
        <Button onPress={save} title="Save"/>

        <Button onPress={logout} title="Logout"/>
    </View>
 )
}

export default ProfileScreen


以下是Profile模式:

import Realm from 'realm';

export class Profile extends Realm.Object<Profile>{
   _id!: string;
   name!: string;
   email?: string;

   static schema = {
       name: 'Profile',
       properties: {
           _id: 'string',
           name: 'string',
           email: 'string'
       },
       primaryKey: '_id'
   }
 }

9rbhqvlz

9rbhqvlz1#

我想这可能会帮助你解决你的问题-https://github.com/realm/realm-js/issues/6013#issuecomment-1655687135
@MinisX您必须在应用程序中使用从createRealmContext返回的useQuery。
另一个选择是省略createRealmContext,而是从@realm/react导入RealmProvider并实现它:<RealmProvider schemas={[Person]}>
@realm/react中已经示例化了一个默认的RealmContext,所以只有在创建多个Realm时才真正需要调用createRealmContext。如果使用Realm,我们将很快更新文档以反映此方法。

相关问题