Javascript 使用React导航,如何基于嵌套堆栈的屏幕渲染外部堆栈标题上的“后退”按钮?
这里有一个小吃可以说明问题: 我将堆栈嵌套在抽屉导航器中,而抽屉导航器嵌套在堆栈导航器中Javascript 使用React导航,如何基于嵌套堆栈的屏幕渲染外部堆栈标题上的“后退”按钮?,javascript,react-native,react-navigation,Javascript,React Native,React Navigation,这里有一个小吃可以说明问题: 我将堆栈嵌套在抽屉导航器中,而抽屉导航器嵌套在堆栈导航器中 我使用外堆栈导航器显示标题栏,中间有徽标,左边有菜单按钮,这会切换菜单。我想抽屉切换按钮被替换为一个后退按钮,每当抽屉中的一个嵌套堆栈位于其堆栈的第二页或更大页上时 如何基于嵌套堆栈的屏幕渲染外部堆栈标题上的“后退”按钮 /** * Authorized Drawer * Used to set the labels in the drawer and enable drawer */ const A
我使用外堆栈导航器显示标题栏,中间有徽标,左边有菜单按钮,这会切换菜单。我想抽屉切换按钮被替换为一个后退按钮,每当抽屉中的一个嵌套堆栈位于其堆栈的第二页或更大页上时
如何基于嵌套堆栈的屏幕渲染外部堆栈标题上的“后退”按钮/**
* Authorized Drawer
* Used to set the labels in the drawer and enable drawer
*/
const AuthorizedDrawer = createDrawerNavigator(
{
ScanQR: {
screen: ScanQRScreen,
navigationOptions: {
drawerLabel: 'Scan'
}
},
ItemStack: {
screen: ItemStack,
navigationOptions: {
drawerLabel: 'Items'
}
},
SendStack: {
screen: SendStack,
navigationOptions: {
drawerLabel: 'Send'
}
},
},
{
initialRouteName: 'ItemStack'
}
);
/**
* Authorized Drawer Stack
* Put the drawer inside a stack so the header can be added and styled
*/
const AuthorizedDrawerStack = createStackNavigator(
{
AuthorizedDrawer: { screen: AuthorizedDrawer },
},
{
headerMode: 'float',
navigationOptions: ({navigation}) => {
return {
headerLeft: (
<View
style={{
paddingLeft: 10,
}}
>
<Icon
name={navigation.state.isDrawerOpen ? 'close' : 'menu'}
color="#2F6BAE"
onPress={() => {
navigation.toggleDrawer();
}}
/>
</View>
),
headerTitle: <Logo />
};
}
}
)
/**
* Root Stack
* Contains all the stacks so you can link from links within one stack to links in the other stack
*/
const RootStack = createStackNavigator(
{
OnboardingStack: { screen: OnboardingStack },
AuthorizedStack: { screen: AuthorizedDrawerStack },
},
{
headerMode: 'none'
}
);
/**
*授权出票人
*用于设置抽屉中的标签并启用抽屉
*/
const AuthorizedDrawer=createDrawerNavigator(
{
ScanQR:{
屏幕:扫描屏幕,
导航选项:{
抽屉标签:“扫描”
}
},
ItemStack:{
屏幕:ItemStack,
导航选项:{
抽屉标签:“项目”
}
},
发送堆栈:{
屏幕:SendStack,
导航选项:{
抽屉标签:“发送”
}
},
},
{
initialRouteName:'ItemStack'
}
);
/**
*授权抽屉堆栈
*将抽屉放入堆栈中,以便可以添加标题并设置样式
*/
const AuthorizedDrawerStack=createStackNavigator(
{
AuthorizedDrawer:{屏幕:AuthorizedDrawer},
},
{
headerMode:'浮动',
导航选项:({navigation})=>{
返回{
左校长:(
{
navigation.toggleDrawer();
}}
/>
),
标题:
};
}
}
)
/**
*根堆栈
*包含所有堆栈,因此您可以从一个堆栈中的链接链接到另一个堆栈中的链接
*/
const RootStack=createStackNavigator(
{
OnboardingStack:{屏幕:OnboardingStack},
AuthorizedStack:{屏幕:AuthorizedDrawerStack},
},
{
headerMode:“无”
}
);
您只需在AuthorizedDrawerStack的navigationOptions
中添加一个小条件
import { HeaderBackButton } from 'react-navigation';
let isRootScreen = (navigation) => navigation.state.routes[navigation.state.index].index === 0;
const AuthorizedDrawerStack = createStackNavigator(
{
AuthorizedDrawer: { screen: AuthorizedDrawer },
},
{
headerMode: 'float',
navigationOptions: ({navigation, screenProps, navigationOptions}) => {
return {
headerLeft: (
<View
style={{
paddingLeft: 10,
}}>
{isRootScreen(navigation) ? // <-- HERE
<Icon
name={navigation.state.isDrawerOpen ? 'close' : 'menu'}
color="#2F6BAE"
onPress={() => {
navigation.toggleDrawer();
}}
/>
: <HeaderBackButton onPress={() => navigation.goBack(null)} />}
</View>
),
headerTitle: <Logo />
};
}
}
)
从“反应导航”导入{HeaderBackButton};
让isRootScreen=(导航)=>navigation.state.routes[navigation.state.index].index==0;
const AuthorizedDrawerStack=createStackNavigator(
{
AuthorizedDrawer:{屏幕:AuthorizedDrawer},
},
{
headerMode:'浮动',
导航选项:({navigation,screenProps,navigationOptions})=>{
返回{
左校长:(
{isRootScreen(导航)?//
:navigation.goBack(null)}/>}
),
标题:
};
}
}
)
这就是工作。我所做的是用redux连接组件。。并根据redux状态处理事情