Реагирующая навигация: навигация вне компонента - PullRequest
1 голос
/ 05 марта 2020

Я пытаюсь перемещать свое приложение снаружи компонента. В частности, я использую перехватчик выборки, и я хочу перемещаться всякий раз, когда получен ответ об ошибке.

Я следовал приведенному ниже примеру: 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 также является текущей до приложение пытается перемещаться

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

Нашел решение. Проблема в том, что у меня была смесь кода версии 4 и версии 5 (и я имел в виду смешанную документацию).

Чтобы устранить проблему, я удалил ссылки на код версии 5, а затем выполнил действия на этой странице, чтобы заставить работать навигатор: https://reactnavigation.org/docs/4.x/navigating-without-navigation-prop/

0 голосов
/ 05 марта 2020

Попробуйте .resetRoot() вместо .reset(). Я думаю, .reset() нужно состояние в качестве аргумента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...