React Navigation Bottom Tabs Navigator 加模态屏幕
React Navigation Bottom Tabs Navigator plus Modal Screen
我有以下代码使用 React Native Navigation 创建标签 v6.x:
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
const Tab = createBottomTabNavigator();
function MyTabs() {
return (
<Tab.Navigator>
<Tab.Screen name="Home" component={HomeScreen} />
<Tab.Screen name="Settings" component={SettingsScreen} />
</Tab.Navigator>
);
}
HomeScreen 有一个应该调用模态屏幕的按钮。
我的问题是:如何在我的导航器中添加这个模态屏幕以从 HomeScreen 调用它,这个调用代码如何?
谢谢!
您无需在导航器中包含模式即可从主页打开它。
你可以这样做:
const HomeScreen = () => {
const [modalVisible, setModalVisible] = useState(false);
function _myModal() {
return(
<Modal
animationType="slide"
visible={modalVisible}
onRequestClose={() => {setModalVisible(false)}}
>
<Text>Hello, I am a modal!</Text>
</Modal>
)
}
// your code
return (
<View>
{/*your code*/}
<Pressable
onPress={() => setModalVisible(true)}
>
<Text>Show Modal</Text>
</Pressable>
{_myModal()}
</View>
);
};
The React-Native documentation 也有一个 class 组件的示例,以防您使用这些组件,还有更多信息也应该对您有所帮助。
如果您想从主页打开模态屏幕,那么您应该创建一个主屏幕堆栈导航器并在该堆栈中添加两个屏幕(主屏幕和模态屏幕),然后通过按下按钮导航到该模态。
选项卡导航器(RootNavigation MyTabs)
...
function MyTabs() {
return (
<Tab.Navigator>
<Tab.Screen name="Home" component={HomeStack} />
<Tab.Screen name="Settings" component={SettingsScreen} />
</Tab.Navigator>
);
}
堆栈导航器(HomeStack)
cosnt Stack = createStackNavigator();
function HomeStack() {
return (
<Stack.Navigator>
<Stack.Screen name="HomeScreen" component={HomeScreen} />
<Stack.Screen name="ModalScreen" component={ModalScreen}
options={{ presentation: 'modal' }} />
</Stack.Navigator>
);
}
主屏幕
export default function HomeScreen({navigation}) {
return (
<View>
<TouchableOpacity onPress={() => navigation.navigate('ModalScreen'}>
<Text>Open ModalScreen</Text>
</TouchableOpacity>
</View>
)
}
我有以下代码使用 React Native Navigation 创建标签 v6.x:
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
const Tab = createBottomTabNavigator();
function MyTabs() {
return (
<Tab.Navigator>
<Tab.Screen name="Home" component={HomeScreen} />
<Tab.Screen name="Settings" component={SettingsScreen} />
</Tab.Navigator>
);
}
HomeScreen 有一个应该调用模态屏幕的按钮。
我的问题是:如何在我的导航器中添加这个模态屏幕以从 HomeScreen 调用它,这个调用代码如何?
谢谢!
您无需在导航器中包含模式即可从主页打开它。
你可以这样做:
const HomeScreen = () => {
const [modalVisible, setModalVisible] = useState(false);
function _myModal() {
return(
<Modal
animationType="slide"
visible={modalVisible}
onRequestClose={() => {setModalVisible(false)}}
>
<Text>Hello, I am a modal!</Text>
</Modal>
)
}
// your code
return (
<View>
{/*your code*/}
<Pressable
onPress={() => setModalVisible(true)}
>
<Text>Show Modal</Text>
</Pressable>
{_myModal()}
</View>
);
};
The React-Native documentation 也有一个 class 组件的示例,以防您使用这些组件,还有更多信息也应该对您有所帮助。
如果您想从主页打开模态屏幕,那么您应该创建一个主屏幕堆栈导航器并在该堆栈中添加两个屏幕(主屏幕和模态屏幕),然后通过按下按钮导航到该模态。
选项卡导航器(RootNavigation MyTabs)
...
function MyTabs() {
return (
<Tab.Navigator>
<Tab.Screen name="Home" component={HomeStack} />
<Tab.Screen name="Settings" component={SettingsScreen} />
</Tab.Navigator>
);
}
堆栈导航器(HomeStack)
cosnt Stack = createStackNavigator();
function HomeStack() {
return (
<Stack.Navigator>
<Stack.Screen name="HomeScreen" component={HomeScreen} />
<Stack.Screen name="ModalScreen" component={ModalScreen}
options={{ presentation: 'modal' }} />
</Stack.Navigator>
);
}
主屏幕
export default function HomeScreen({navigation}) {
return (
<View>
<TouchableOpacity onPress={() => navigation.navigate('ModalScreen'}>
<Text>Open ModalScreen</Text>
</TouchableOpacity>
</View>
)
}