ReactNative 之React Navigation

2019-10-27  本文已影响0人  景元合

什么是react-navigation?

react-navigation是致力于解决导航卡顿,数据传递,Tabbar和navigator布局,支持redux。虽然现在功能还不完善,但基本是可以在项目中推荐使用的。

安装react-navigation

将react-navigation,react-native-gesture-handlerreact-native-reanimatedreact-native-screens包安装在您的React Native项目中。

yarn add react-navigation
yarn add react-native-reanimated react-native-gesture-handler react-native-screens@^1.0.0-alpha.23

接下来,我们需要链接这些库。步骤取决于您的React Native版本:

React Native 0.60 and higher

在较新版本的React Native上,链接是自动的
要在iOS上完成链接,请确保已安装Cocoapods。然后运行:

cd ios
pod install
cd ..

要完成react-native-screens Android的安装,请将以下两行添加到android/app/build.gradle的dependencies部分:

implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02'

Hello React Navigation

React Navigation的堆栈导航器为您的应用提供了一种在屏幕之间转换和管理导航历史记录的方式。如果您的应用仅使用一个堆栈导航器,那么它在概念上类似于Web浏览器处理导航状态的方式-您的应用在用户与之交互时从导航堆栈中推送和弹出项目,这导致用户看到不同的屏幕。它在Web浏览器和React Navigation中的工作方式之间的主要区别在于,React Navigation的堆栈导航器提供了在堆栈中的路线之间导航时在Android和iOS上期望的手势和动画。
使用之前安装react-navigation-stack

yarn add react-navigation-stack

1、创建一个堆栈导航器

import { createStackNavigator } from 'react-navigation-stack';

createStackNavigator(RouteConfigs, StackNavigatorConfig);

createStackNavigator是一个返回React组件的函数。它需要一个路由配置对象,以及一个可选的选项对象(我们现在在下面省略)。createAppContainer是一个函数,该函数返回一个React组件,以将创建的createStackNavigator组件作为参数,并可以直接从中导出App.js以用作我们应用程序的根组件。

import { createStackNavigator } from 'react-navigation-stack';
import { createAppContainer,createSwitchNavigator } from 'react-navigation';
import WelcomePage from "../pages/WelcomePage";
import HomePage from "../pages/HomePage";
import DetailPage from "../pages/DetailPage";
const InitNavigator=createStackNavigator({
    WelcomePage:{
        screen:WelcomePage,
        navigationOptions:{
            header:null
        }
    }
})
const MainNavigator=createStackNavigator({
    HomePage:{
        screen:HomePage,
        navigationOptions:{
            header:null
        }
    },
    DetailPage:{
        screen:DetailPage,
        navigationOptions:{
            header:null
        }
    }

})
const appNavigator=createSwitchNavigator({
    Init:InitNavigator,
    Main:MainNavigator
})
export default createAppContainer(appNavigator);

RouteConfigs

screen: ProfileScreen,
// When `ProfileScreen` is loaded by the StackNavigator, it will be given a `navigation` prop.
// Optional: When deep linking or using react-navigation in a web app, this path is used:
path: 'people/:name',
// The action and route params are extracted from the path.
// Optional: Override the `navigationOptions` for the screen
navigationOptions: ({ navigation }) => ({
  title: `${navigation.state.params.name}'s Profile'`,

StackNavigatorConfig

视觉选项:

navigationOptions 用于RouteConfigs的配置

上一篇 下一篇

猜你喜欢

热点阅读