Как получить состояние реагирующего навигатора вне root реагирующего навигатора? - PullRequest
0 голосов
/ 04 марта 2020

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


const App = () => {
  useEffect(() => {
    const handleAppStateChange = (): void => {
      // Authority check action
    };
    AppState.addEventListener('change', handleAppStateChange);
  }, []);

  return (
    <Provider store={store}>
      <SafeAreaProvider>
        <SafeAreaView>
          <RootNavigator />
          <OverlayActivityIndicator />
          <ActionSheet />
        </SafeAreaView>
      </SafeAreaProvider>
    </Provider>
  );
}

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

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

Есть еще идеи?

1 Ответ

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

Вы можете сослаться на это для получения навигации вне компонентов

import { NavigationContainer } from '@react-navigation/native';
import { navigationRef } from './RootNavigation';

export default function App() {
  return (
    <NavigationContainer ref={navigationRef}>{/* ... */}</NavigationContainer>
  );
}


//whereas 
import * as React from 'react';

export const navigationRef = React.createRef();

export function navigate(name, params) {
  navigationRef.current?.navigate(name, params);
}
...