# react-native路由之react-navigation **Repository Path**: hope93/react-navigation ## Basic Information - **Project Name**: react-native路由之react-navigation - **Description**: react-native路由之react-navigation(一) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2019-05-17 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: 奥利给 ## README ## 安装 在react-native项目目录下,安装react-navigation包 ``` npm install --save react-navigation ``` 然后再安装react-native-gesture-handler包 ``` npm install --save react-native-gesture-handler ``` link所有原生依赖 ``` react-native link react-native-gesture-handler ``` react-native-gesture-handler在 Android 上的安装,还需要手动修改 **MainActivity.java** (./android/app/src/main/java/com/newpro)文件 ``` package com.reactnavigation.newpro; import com.facebook.react.ReactActivity; + import com.facebook.react.ReactActivityDelegate; + import com.facebook.react.ReactRootView; + import com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView; public class MainActivity extends ReactActivity { @Override protected String getMainComponentName() { return "newpro"; } + @Override + protected ReactActivityDelegate createReactActivityDelegate() { + return new ReactActivityDelegate(this, getMainComponentName()) { + @Override + protected ReactRootView createRootView() { + return new RNGestureHandlerEnabledRootView(MainActivity.this); + } + }; + } } ``` ## 创建createStackNavigator createStackNavigator是一个返回 React 组件的方法。 它需要 *a route configuration object*(一个路由配置对象) 和 *an options object*(一个可选对象) (现在我们忽略下面的内容). 由于 createStackNavigator 函数会返回一个React组件,因此我们可以直接从 App.js 中导出它以用作我们应用程序的根组件。 **只有唯一一个路由配置:** 如果只有唯一一个路由,则直接对Home进行赋值{ Home: HomeScreen } ``` import React from "react"; import { View, Text } from "react-native"; import { createStackNavigator, createAppContainer } from "react-navigation"; class HomeScreen extends React.Component { render() { return ( Home Screen ); } } const AppNavigator = createStackNavigator({ Home: HomeScreen }); export default createAppContainer(AppNavigator); ``` **多个路由配置:** ``` import React from 'react'; import { View, Text, Button } from 'react-native'; import { createAppContainer, createStackNavigator, StackActions, NavigationActions } from 'react-navigation'; // Version can be specified in package.json class HomeScreen extends React.Component { render() { return ( Home Screen