我在我的 React Native 应用程序中使用
@realm/react
。
不幸的是,文档不是那么好。
它们提供了 ContextProvider 和钩子,您可以使用它们来访问领域,但不可能从组件外部访问领域(例如,我从组件调用的一些外部逻辑)。 我可以继续创建自己的领域并编写自己的背景,但这似乎是逆流而行。
有这样做的领域方法吗?创建一个领域,将领域上下文关联到该领域并在反应世界之外使用该领域?
(我知道,我可以将领域从组件传递到函数,但这意味着我必须将其拖过函数调用的多个实例,这感觉不对)
是的,你可以做到,只需创建SingletonClass来保存Realm实例,在每个你需要使用的函数中
Realm
,你必须在使用前检查它是否== null。
这里是 Singleton 类使用它的简单方法:
export default class RealmManager {
static myInstance = null;
_realm = null;
/**
* @returns {RealmManager}
*/
static getInstance() {
if (RealmManager.myInstance == null) {
RealmManager.myInstance = new RealmManager();
}
return this.myInstance;
}
getRealm() {
return this._realm;
}
setRealm(realm){
this._realm = realm;
}
}
然后在 RealmContext 中的第一类中,您在
useEffect
中获取领域实例,然后设置为 RealmManager
,确保在使用 app 时不会重新渲染