我正在尝试在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'
}
}
型
1条答案
按热度按时间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,我们将很快更新文档以反映此方法。