反应导航:如何在所有屏幕中显示导航抽屉?

时间:2020-02-15 12:01:33

标签: react-native react-navigation react-navigation-stack react-navigation-drawer react-navigation-v5

我有一个Navigation Drawer,应该出现在我的所有屏幕上(Splash屏幕除外)。

我就是这样的


const Stack = createStackNavigator();
const Drawer = createDrawerNavigator();

const StackNavigator = () => {
    return (
        <Stack.Navigator>
            <Stack.Screen name="EstateDetails" component={Screens.EstateDetails} />
            <Stack.Screen name="Tour" component={Screens.Tour} />
            <Stack.Screen name="Comparison" component={Screens.Comparison} />
            <Stack.Screen name="Blog" component={Screens.Blog} />
            <Stack.Screen name="Auth" component={Screens.Auth} />
        </Stack.Navigator>
    );
};

const DrawerNavigator = () => {
    return (
        <Drawer.Navigator drawerContent={props => CustomDrawerContent(props)}>
            <Drawer.Screen name="HomeScreen" component={Screens.Home} />
            <Drawer.Screen name="stack" component={StackNavigator} />
            <Drawer.Screen name="RegisterEstate" component={Screens.RegisterEstate} />
            <Drawer.Screen name="Filter" component={Screens.Filter} />
            <Drawer.Screen name="Conditions" component={Screens.Conditions} />
            <Drawer.Screen name="Judicial" component={Screens.Judicial} />
            <Drawer.Screen name="ContactUs" component={Screens.ContactUs} />
            <Drawer.Screen name="ReportBugs" component={Screens.ReportBugs} />
        </Drawer.Navigator>
    )
};

export const AppNavigator = () => {
    return (
        <NavigationContainer>
            <Stack.Navigator initialRouteName="Splash">
                <Stack.Screen name="Splash" component={Screens.Splash}/>
                <Stack.Screen name="Home" component={DrawerNavigator}/>
            </Stack.Navigator>
        </NavigationContainer>
    );
};

在这种情况下,所有可以的唯一堆叠屏幕都用作抽屉屏幕。 (该屏幕仅加载一次,并在下次显示初始加载,就像博客屏幕一样)。 ‌

我需要将光标停留在除启动画面之外的所有页面上,并堆叠我的一些页面(例如内容不相同的动态页面)

1 个答案:

答案 0 :(得分:1)

如果要在所有其他屏幕上显示相同的抽屉,只需将{DrawerNavigator}传递到要显示抽屉的所有其他屏幕。因此,在本示例中,如果要在“游览”和“博客”屏幕中显示抽屉,只需添加

<Stack.Screen name="Blog " component={DrawerNavigator} />
<Stack.Screen name="Tour" component={DrawerNavigator} />

现在您可以在“博客和游览”屏幕中访问。

如果要在其他屏幕中显示其他抽屉,则创建一个新功能。