【发布时间】:2021-09-11 00:30:49
【问题描述】:
当我想组合堆栈导航器、底部选项卡和模式时,您如何处理不同的导航?现在,一切正常,但问题是我只希望特定链接成为模式,相反,添加 mode: 'modal' 将使所有内容成为模式。
App.js:
<NavigationContainer>
<RootStack />
</NavigationContainer>
根栈:
<Stack.Navigator
screenOptions={{
headerShown: false,
}}>
<Stack.Screen name="Login" component={LoginScreen} />
<Stack.Screen name="Register" component={RegisterScreen} />
<Stack.Screen name="Home" component={BottomTabs} />
</Stack.Navigator>
底部标签:
<Tab.Navigator mode="modal">
<Tab.Screen
name={'Home'}
component={ExploreStack}
options={{
tabBarIcon: ({color, size}) => <Icon name="camera" size={25} />,
}}
/>
<Tab.Screen
name={'Post'}
component={PostScreen}
options={{
tabBarIcon: ({color, size}) => <Icon name="camera" size={25} />,
}}
listeners={({navigation}) => ({
tabPress: event => {
event.preventDefault();
navigation.navigate('PostStack');
},
})}
/>
</Tab.Navigator>
探索堆栈:
<Stack.Navigator
mode="modal"
screenOptions={{
headerShown: false,
}}>
<Stack.Screen name="Explore" component={ExploreScreen} />
<Stack.Screen name="Modal" component={ModalStack} />
<Stack.Screen name="ProductDetail" component={ProductDetailScreen} />
<Stack.Screen
name="PostStack"
component={PostStack}
options={{
gestureEnabled: false,
}}
/>
<Stack.Screen
name="LocationStack"
component={LocationStack}
headerMode="none"
options={{
headerMode: 'screen',
...TransitionPresets.ModalPresentationIOS,
}}
/>
</Stack.Navigator>
所以我想做的是使 ExploreStack 中的 LocationStack 成为 模态,并保留 ProductDetail 作为常规导航堆栈(不是模式)。
所以我的 ExploreStack 中的所有内容都变成了模式。
【问题讨论】:
标签: react-native react-navigation react-navigation-v5 react-navigation-stack react-navigation-bottom-tab