我正在尝试将多个上下文提供程序按不同的目的划分,以在react native的同一领域上工作。
<FirstRealmProvider>
<SecondRealmProvider>
<FunctionalComonentUsingHooksFromFristAndSecond>
</SecondRealmProvider>
</FirstRealmProvider>
我在第一个组件中初始化(打开)领域(它也负责关闭等),并在useEffect钩子的帮助下通过realmRef = useRef<Realm>(null);
保存对它的引用。在第二个和第三个组件中使用从第一个组件导出的上下文函数和集合可以正常工作,除非我在SecondRealmProvider中实现另一个useEffect(有或没有直接访问领域或其导出的ref)。如果我这样做的领域抱怨realmRef.current
是空的(这是在firstalmprovider的useEffect设置,不应该是空的,除非在SecondRealmProvider的内部useEffect被调用后。在这种情况下,似乎不可能通过关注点链接和共享逻辑,并且firstalmprovider将成为一个多用途的组件。
请帮我查明我在这里遗漏了什么。
谢谢。
由于react首先在内部组件上初始化(调用useEffect),如果这也依赖于初始化,则不能使用外部组件的功能。为了使它工作,我添加了一个is"Particular"ProviderInitialized,如下所示:
const [nlpIsInitialized, setInitialized] = useState<boolean>(false);
和每个提供程序都忽略useEffect,直到外部提供程序也报告被初始化为止。useEffect也依赖于外部Provider的初始值,现在一切都正常工作了。