如何在 React Native 中使用带 React 导航的路由?
原文:https://www . geesforgeks . org/how-to-use-routing-with-react-navigation-in-react-native/
几乎每个移动应用程序都需要在不同屏幕之间导航。React Native 提供了一个优雅且易于使用的库来为原生应用程序添加导航:react-navigation。它是在 React Native 应用程序中用于路由和导航的最流行的库之一。
多个屏幕之间的转换由导航器管理。反应导航允许各种导航器,如堆栈导航器、抽屉导航器、标签导航器等。除了在多个屏幕之间导航之外,它还可以用于在屏幕之间共享数据。
进场:我们将使用反应导航提供的 StackNavigator。它用于允许屏幕之间的转换,其中每个新屏幕都放置在堆栈的顶部。在我们的例子中,我们将创建 3 个屏幕,并使用 StackNavigator 在它们之间转换。我们还将学习如何将数据从一个屏幕传递到另一个屏幕,并与基本转换一起显示在屏幕标题中。
创建应用和安装模块:
-
步骤 1: 打开终端,通过以下命令安装 expo-cli。
jsx npm install -g expo-cli
-
步骤 2: 现在通过以下命令创建一个项目。
jsx expo init react-navigation-routing
-
第三步:现在进入你的项目文件夹,即反应-导航-路线
jsx cd react-navigation-routing
-
步骤 4: 使用以下命令安装所需的软件包:
npm 安装-保存反应-导航反应-导航-堆栈反应-原生-重新激活反应-原生-手势-处理程序反应-原生-屏幕反应-原生-矢量-图标
项目结构:项目目录应该如下所示:
示例:在本例中,我们将创建 3 个屏幕,即主屏幕、配置文件屏幕和设置屏幕。我们将使用堆栈导航器,并用一些基本的样式来配置它。我们还将从一个屏幕动态发送数据,并将其作为标题显示在另一个屏幕上(从主屏幕上的用户那里获取输入,将其传递到配置文件屏幕,并将其显示在配置文件屏幕的标题上。
该文件包含基本的导航器设置。我们将使用 react-navigation-stack 库提供的 createStackNavigator()方法来创建我们的堆栈导航器。使用默认导航选项向所有 3 个屏幕提供一些基本样式。
App.js
import React from "react";
import { createAppContainer } from "react-navigation";
import { createStackNavigator } from "react-navigation-stack";
import HomeScreen from "./screens/HomeScreen";
import ProfileScreen from "./screens/ProfileScreen";
import SettingsScreen from "./screens/SettingsScreen";
const AppNavigator = createStackNavigator(
{
Home: HomeScreen,
Profile: ProfileScreen,
Settings: SettingsScreen,
},
{
defaultNavigationOptions: {
headerStyle: {
backgroundColor: "#006600",
},
headerTintColor: "#FFF",
},
}
);
const Navigator = createAppContainer(AppNavigator);
export default function App() {
return (
<Navigator>
<HomeScreen />
</Navigator>
);
}
这是我们堆栈的第一个屏幕。在此屏幕中,我们将要求用户提供一个配置文件名称作为输入,我们将把它传递到“配置文件”屏幕。
HomeScreen.js
import React, { useState } from "react";
import { Text, View, TextInput, Button } from "react-native";
import { Ionicons } from "@expo/vector-icons";
const Home = (props) => {
const [input, setInput] = useState("");
return (
<View style={{ flex: 1, alignItems: "center", justifyContent: "center" }}>
<Text style={{ color: "#006600", fontSize: 40 }}>Home Screen!</Text>
<Ionicons name="ios-home" size={80} color="#006600" />
<TextInput
placeholder="Enter your profile"
value={input}
onChangeText={(value) => setInput(value)}
/>
<Button
title="Go to Profile"
color="#006600"
onPress={() =>
props.navigation.navigate("Profile", { username: input })
}
/>
</View>
);
};
export default Home;
该屏幕将接收用户在主屏幕中使用导航数据对象给出的输入,并在其标题中显示。
profiles screen . js
import React from "react";
import { Text, View, Button } from "react-native";
import { Ionicons } from "@expo/vector-icons";
const Profile = (props) => {
return (
<View style={{ flex: 1, alignItems: "center", justifyContent: "center" }}>
<Text style={{ color: "#006600", fontSize: 40 }}>Profile Screen!</Text>
<Ionicons name="ios-person-circle-outline" size={80} color="#006600" />
<Button
title="Go to Settings"
color="#006600"
onPress={() => props.navigation.navigate("Settings")}
/>
</View>
);
};
Profile.navigationOptions = (navData) => {
return {
headerTitle: navData.navigation.getParam("username"),
};
};
export default Profile;
这是一个简单的屏幕,带有返回主屏幕的按钮。
设置屏幕.js
import React from "react";
import { Text, View, Button } from "react-native";
import { Ionicons } from "@expo/vector-icons";
const Settings = (props) => {
return (
<View style={{ flex: 1, alignItems: "center", justifyContent: "center" }}>
<Text style={{ color: "#006600", fontSize: 40 }}>Settings Screen!</Text>
<Ionicons name="ios-settings-outline" size={80} color="#006600" />
<Button
title="Go to Home"
color="#006600"
onPress={() => props.navigation.navigate("Home")}
/>
</View>
);
};
export default Settings;
运行应用程序的步骤:使用以下命令启动服务器。
expo start
输出:
参考:T2】https://reactnative.dev/docs/navigation
版权属于:月萌API www.moonapi.com,转载请注明出处