Скажем, у меня есть два навигатора, как это:
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 поддерживает это?