Как составить ParamList для вложенных навигаторов в v5? - PullRequest
1 голос
/ 24 марта 2020

Скажем, у меня есть два навигатора, как это:

export type RootStackParamList = {
  Bootstrap: undefined;
  Login: undefined;
  MainApp: undefined;
};

export type MainTabsParamList = {
  Explore: undefined;
  Profile: undefined;
};

const MainTabs = createBottomTabNavigator<MainTabsParamList>();
const MainApp = () => (
  <MainTabs.Navigator >
    <MainTabs.Screen
      name="Explore"
      component={Explore}
    />
    <MainTabs.Screen
      name="Profile"
      component={Profile}
    />
  </MainTabs.Navigator>
);

const RootStack = createStackNavigator<RootStackParamList>();
const App = () => {
  return (
    <NavigationContainer>
      <RootStack.Navigator initialRouteName="Bootstrap" headerMode="none">
        <RootStack.Screen name="Bootstrap" component={Bootstrap} />
        <RootStack.Screen name="Login" component={Login} />
        <RootStack.Screen name="MainApp" component={MainApp} />
      </RootStack.Navigator>
    </NavigationContainer>
  );
};

Теперь, если я хочу перейти на экран Profile с экрана Bootstrap. Я должен написать: (навигационная реквизита правильно аннотирована)

navigation.navigate('MainApp', {screen: 'Profile'})

Но машинописный текст дает ошибку здесь. Говоря Type '{ screen: string; }' is not assignable to type 'undefined'. Это потому, что машинопись не знает, MainApp имеет дочерние экраны. Поэтому мне нужно как-то составить ParamLists, чтобы машинопись знала о дочерних экранах. Как я могу это сделать? react-navigation v5 поддерживает это?

...