Реагирование Nagivation getRootState не определено для initialRouteName? - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть пользовательский хук, который получает текущий маршрут из React Navigation:

import { getRootState } from "application/components/provider/root-navigation";

import React from "react";

const useCurrentPage = () => {
  const state = getRootState();

  if (!state) {
    return null;
  }

  return state.routes[state.index].name;
};

export default useCurrentPage;

Это работает, кроме значения по умолчанию root. Поэтому, когда маршрут home getRootState равен undefined, что означает, что хук возвращается null

<Stack.Navigator headerMode="none" initialRouteName="home">
  <Stack.Screen name="home" component={Home} />
  <Stack.Screen name="contact" component={Contact} />
</Stack.Navigator>

Я могу взломать решение с этим, но зачем это нужно ?:

import { getRootState } from "application/components/provider/root-navigation";

import React from "react";

const useCurrentPage = () => {
  const state = getRootState();

  if (!state) {
    return "home"
  }

  return state.routes[state.index].name;
};

export default useCurrentPage;

Здесь определено getRootState:

export const navigationRef = React.createRef();

export function getRootState() {
  return navigationRef.current?.getRootState();
}

И мой NavigationContainer:

const NavigationProvider = ({ children }) => {
  return (
    <NavigationContainer ref={navigationRef}>{children}</NavigationContainer>
  );
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...