Ящик React-Navigation возвращает меня к предыдущему экрану сразу после отображения элемента - PullRequest
0 голосов
/ 21 ноября 2018

У меня 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} />
});

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

Login -> Home

Но когда я пытаюсь перейти от Home к Favorites, он сразу же возвращается к Home после рендеринга экрана Favorites.

Я использую response-navigation@2.11.2 и Reaction-native@0.56.0

1 Ответ

0 голосов
/ 21 ноября 2018

При использовании 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 Article также.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...