reactjs - 来自 React Navigation Drawer 的 React Native Display Modal

标签 reactjs react-native navigation-drawer react-navigation-drawer

我有一个应用程序,我希望某些导航路线在用户单击它们时在当前页面上显示模式,而不是导航到一个完全不同的页面。我现有的代码是:

const DrawerNavigator = () => {
    return (
      <Drawer.Navigator>
        <Drawer.Screen name="My Porfolio" component={Portfolio} />
        <Drawer.Screen name="Account" component={Account} />
        <Drawer.Screen name="NBA" component = {NBALobby} />
        <Drawer.Screen name="NFL" component = {NFLLobby} />
        <Drawer.Screen name="How To Play" component = {HowToPlayModal} />
      </Drawer.Navigator>
    );
  }

我的模式按预期显示,但它似乎显示在一个新的、完全空白的页面上。有没有办法从 Drawer Navigator 调用一个函数来显示模态?

我的模态代码是:

import React, { Component, useState } from 'react';
import {Text, TextInput, View, TouchableOpacity} from 'react-native';
import Modal from 'react-native-modal';

import {styles} from '../styles/signUpIn';
    
const HowToPlayModal = () => {
    
    return(
        <Modal isVisible = {true}>
                <View style={styles.container2}>
                <View style={{flexDirection: 'row'}}>
                        <Text style={styles.title}>How To Play</Text>
                        <View style= {{flex:1, alignItems: 'flex-end'}}>
                                <Text style={[styles.fieldTitle, {marginLeft: 0}]}>Remember?</Text>
                                <Text style={styles.accent} >Sign In</Text>
                        </View>      
                </View>
                </View>
        </Modal>
        );
}
    
export default HowToPlayModal;

最佳答案

您需要创建一个 Root Stack Navigator,它将包含 Modal 组件和您的 Drawer Navigator。

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

const DrawerNavigator = () => {
    return (
        <Drawer.Navigator>
            <Drawer.Screen name="My Porfolio" component={Portfolio} />
            <Drawer.Screen name="Account" component={Account} />
            <Drawer.Screen name="NBA" component = {NBALobby} />
            <Drawer.Screen name="NFL" component = {NFLLobby} />
        </Drawer.Navigator>
    );
};

const RootStackScreen = () => {
  return (
    <NavigationContainer>
        <RootStack.Navigator mode="modal">
            <RootStack.Screen
                name="Main"
                component={DrawerNavigator}
                options={{ headerShown: false }}
            />
            <RootStack.Screen name="HowToPlayModal" component={HowToPlayModal} />
        </RootStack.Navigator>
    </NavigationContainer>
  );
}

完整的解释可以在这里找到https://reactnavigation.org/docs/drawer-based-navigation

对于 React Native Navigation v6,mode="modal" is removed in favor of presentation: 'modal'

关于reactjs - 来自 React Navigation Drawer 的 React Native Display Modal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63274615/

相关文章:

javascript - 如何将个人资料图片设置为名字和姓氏的首字母?

javascript - React.PureComponent 和子组件

javascript - 如何在 React Native Reanimated 中对键盘事件使用react?

javascript - react native : Opening URLs in Android (Equivalent to LinkingIOS. openURL)

android - 如何在 Activity 的特定 fragment 中禁用抽屉选项

reactjs - 在 catchError 中发出多个操作 - Redux Observable

javascript - npm启动错误 "Module not found: Error: Cannot resolve directory"

javascript - React - 三元运算符的使用是否导致React渲染缓慢

java - FragmentManager.beginTransaction() 不能应用于 (int, android.app.fragment)

android - 抽屉导航多个容器和最佳实践