Я пытаюсь перемещать свое приложение снаружи компонента. В частности, я использую перехватчик выборки, и я хочу перемещаться всякий раз, когда получен ответ об ошибке.
Я следовал приведенному ниже примеру: https://reactnavigation.org/docs/navigating-without-navigation-prop/
Однако мой приложение по-прежнему выдает ошибку, в которой говорится, что либо навигатор не отображается, либо навигатор не завершил монтирование:
Снимок экрана приложения с сообщением об ошибке
As Насколько я могу судить, ни одна из этих ситуаций не применима. Приложение загружается и отображается с помощью навигатора, прежде чем я пытаюсь на самом деле перейти
Мой App.jsx:
// ... imports and so on ...
fetchIntercept.register({
response: (response) => {
if (response.status === 401) {
// Unverified subscription
RootNavigation.reset({ index: 0, routes: [{ name: 'Intercept' }] });
}
return response;
},
});
{ ... }
const InterceptNavigator = createStackNavigator(
{
Application: {
screen: ApplicationScreen,
},
Intercept: {
screen: SubscriptionInterceptScreen,
},
},
{
initialRouteKey: 'Application',
},
);
const App = createAppContainer(InterceptNavigator);
export default () => {
React.useEffect(() => {
RootNavigation.isMountedRef.current = true;
return () => { RootNavigation.isMountedRef.current = false; };
}, []);
return (
<NavigationContainer ref={RootNavigation.navigationRef}>
<App />
</NavigationContainer>
);
};
RootNavigation. js:
import * as React from 'react';
export const isMountedRef = React.createRef();
export const navigationRef = React.createRef();
export function navigate(name, params) {
if (isMountedRef.current && navigationRef.current) {
navigationRef.current.navigate(name, params);
}
}
export function reset(options) {
if (isMountedRef.current && navigationRef.current) {
navigationRef.current.reset(options);
}
}
Я также вставил несколько консольных журналов, и все они показали, что приложение загружено, что навигация REF текущая, и что isMountingRef также является текущей до приложение пытается перемещаться