Ящик React-Navigation возвращает меня к предыдущему экрану сразу после отображения элемента
У меня есть StackNavigation как это:
const AppNavigator = createStackNavigator({
Login: {
screen: Login,
navigationOptions: () => ({
title: 'Login',
headerTintColor: 'white',
headerStyle:{
backgroundColor: '#000',
elevation: 0,
showdowOpacity: 0
},
})
},
Home: {
screen: AppDrawerNavigator,
navigationOptions: () => ({
header: null
})
},
});
С DrawerNavigator, вложенным внутрь:
const AppDrawerNavigator = createDrawerNavigator({
Home: {
screen: Home,
navigationOptions: {
drawerLabel: 'Home',
gesturesEnabled: false,
}
},
Favorites: {
screen: Favorites,
navigationOptions: {
drawerLabel: 'Favorites',
}
}
},
{
drawerPosition: 'left',
contentComponent: props => <Drawer {...props} />
});
Начальный маршрут стека навигатора работает нормально
Вход -> Главная
Но когда я пытаюсь перейти от дома к избранному, он сразу же возвращается к дому после отображения экрана избранного.
Я использую response-navigation@2.11.2 и response-native@0.56.0
1 ответ
Решение
С Home используется как навигатор стека и ящика. Есть большие шансы возникновения конфликтов имен здесь.
Попробуйте эту структуру.
const Stack = {
FirstView: {
screen: FirstView
},
SecondView: {
screen: SecondView
},
ThirdView: {
screen: ThirdView
}
};
const DrawerRoutes = {
FirstViewStack: {
name: 'FirstViewStack',
screen: StackNavigator(Stack, { initialRouteName: 'FirstView' })
},
SecondViewStack: {
name: 'SecondViewStack',
screen: StackNavigator(Stack, { initialRouteName: 'SecondView' })
},
ThirdViewStack: {
name: 'ThirdViewStack',
screen: StackNavigator(Stack, { initialRouteName: 'ThirdView' })
},
};
const RootNavigator =
StackNavigator({
Drawer: {
name: 'Drawer',
screen: DrawerNavigator(
DrawerRoutes,
),
},
...Stack
},
{
headerMode: 'none'
}
);
Я столкнулся с аналогичной проблемой, когда пытался использовать меню гамбургеров на моей домашней странице (в котором используется стековый навигатор для перехода на другие страницы).
Проверьте эту статью Git также.