Ящик 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 также.

Другие вопросы по тегам