代码之家  ›  专栏  ›  技术社区  ›  I'm not human

React导航抽屉在呈现项目屏幕后立即将我路由回上一个屏幕

  •  0
  • I'm not human  · 技术社区  · 6 年前

    我有一个这样的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} />
    });
    

    堆栈导航器的初始路由工作正常

    登录->主页

    但当我尝试从主页导航到收藏夹时,它会在呈现收藏夹屏幕后立即导航回主页。

    我正在使用react navigation@2.11.2和react native@0.56.0

    1 回复  |  直到 6 年前
        1
  •  1
  •   Manju Basha    6 年前

    在堆栈导航器和抽屉导航器中都使用了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'
            }
        );
    

    当我试图在主页上使用汉堡包菜单(使用StackNavigator转到其他页面)时,我遇到了类似的问题。

    检查这个 Git Article 也。

    推荐文章