安装
1、在你的 React Native 项目中安装react-navigation这个包
npm install --save react-navigation
2、安装 react-native-gesture-handler
npm install --save react-native-gesture-handler
3、Link 所有的原生依赖
react-native link react-native-gesture-handler
iOS 啥都不用做,在 Android 上的安装,请确保在 MainActivity.java 上完成如下修改:
package com.reactnavigation.example;
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 \"Example\";
}
+ @Override
+ protected ReactActivityDelegate createReactActivityDelegate() {
+ return new ReactActivityDelegate(this, getMainComponentName()) {
+ @Override
+ protected ReactRootView createRootView() {
+ return new RNGestureHandlerEnabledRootView(MainActivity.this);
+ }
+ };
+ }
}
使用
1、建立一个navigator.js存放路由配置
import React from \'react\';
import {createAppContainer, createStackNavigator, StackNavigator} from \'react-navigation\';
//引入页面
import Login from \'../page/Login\';
import Reg from \'../page/Reg\';
import App from \'../page/App\';
const AppNavigator = createStackNavigator({
Login: {
screen: Login,
//不显示标题栏
navigationOptions: {
header: null
}
},
Reg: {
screen: Reg
},
App: {
screen: App
}
},
{
//默认显示页面
initialRouteName: \"App\"
}
);
export default createAppContainer(AppNavigator);
2、修改项目入口文件App.js
import React from \"react\";
import {createAppContainer} from \"react-navigation\";
//上一步创建的路由配置文件
import AppNavigator from \'./src/navigator/navigator\'
const AppContainer = createAppContainer(AppNavigator);
export default class App extends React.Component {
render() {
return <AppContainer/>;
}
}
3、页面跳转
在组件onPress方法中,使用如下方式跳转页面。
navigate方法接收2个参数
参数1:路由名称
参数2:传值,可省略
//相当于html中的 href=\'/Reg?key1=val1\'
this.props.navigation.navigate(\'Reg\',{key1:val1});
4、在目标页面中接收传参
getParam接收2个参数,获取不到时返回null
参数1:参数名称
参数2:默认值
this.props.navigation.getParam(\'paramsName\',defalutValue)
版权声明
本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。



