Ящик 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} />
});

Начальный маршрут навигатора стека работает нормально

Вход -> Главная

Но когда я пытаюсь перейти из Домашней страницы в Избранное, она сразу же возвращается на Домашнюю страницу после рендеринга экрана «Избранное».

Я использую [email protected] и [email protected]


person I'm not human    schedule 21.11.2018    source источник
comment
попробуйте переименовать Home в корневом стеке и Home в стеке ящиков ... может быть, они испортили   -  person Ahsan Sohail    schedule 21.11.2018
comment
Не могли бы вы рассказать, почему вы используете DrawerNavigator. Вы пытаетесь использовать гамбургер-меню на своей домашней странице (которое использует навигатор стека для перехода на другие страницы)?   -  person Manju Basha    schedule 21.11.2018


Ответы (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.

person Manju Basha    schedule 21.11.2018