#react-native #realm #use-effect #react-context
Вопрос:
Я пытаюсь связать несколько контекстных провайдеров, разделенных по разным целям, для работы в одной и той же области в react native.
lt;FirstRealmProvidergt; lt;SecondRealmProvidergt; lt;FunctionalComonentUsingHooksFromFristAndSecondgt; lt;/SecondRealmProvidergt; lt;/FirstRealmProvidergt;
Я инициализирую (открываю) область в первом компоненте (он также отвечает за закрытие и т. Д.) И сохраняю ссылку на нее realmRef = useReflt;Realmgt;(null);
с помощью крючка useEffect. Использование экспортированных контекстных функций и коллекций из первого компонента во втором и третьем компонентах будет работать нормально, если я не реализую другой эффект использования в SecondRealmProvider (с прямым доступом к области или без доступа к ее экспортированной ссылке). Если я это сделаю, область пожалуется realmRef.current
на то, что она равна нулю (что задано в эффекте использования FirstRealmProvider и не должно быть равно нулю, если эффект использования не вызывается после того, как внутренний эффект использования SecondRealmProvider был вызван первым. В этом случае невозможно будет связать и разделить логику по проблемам, и первый поставщик станет многоцелевым компонентом, перегруженным.
Пожалуйста, помогите мне точно определить, чего мне здесь не хватает.
Спасибо.
Ответ №1:
Поскольку react инициализирует (вызывает useEffect) сначала на внутренних компонентах, они не могут использовать функциональность внешних, если это также зависит от инициализации. Чтобы это все равно работало, я добавил»Конкретный»провайдер, инициализированный так:
const [nlpIsInitialized, setInitialized] = useStatelt;booleangt;(false);
и каждый поставщик игнорирует эффект использования до тех пор, пока внешний поставщик не сообщит, что он также инициализирован. Эффект использования также зависит от инициализированного значения внешнего поставщика, и теперь все работает так, как должно.