react-navigation和react-router的对比:

  • 支持的平台:
    react-navigationreact-native
    react-routerreact-nativereactjs
  • 性质:
    react-navigation:静态路由(需要在程序一处进行完整的路由配置才能使用)
    react-router:动态路由(route在需要使用的地方配置,可以把Route当做React中的组件)
 

Ref: 从react-navigation转react-router

目录篇:

Ref: react-native-router-flux使用技巧(API篇)

  • 通用性:在最新的V4版本中是基于react-navigation实现的,如果使用过react-native-router-flux那么使用新版本的学习成本会低很多;

  • 实用性:react-navigation虽然是官方推荐的导航库,但其库内部提供的,可以直接使用的功能很简单,有些还需要配合redux来实现需要的功能。而react-native-router-flux基于react-navigation实现其没有提供的APIpopTo(跳回指定页面)refresh(刷新页面)replaceModal(类似iOS从底部弹出个新页面的效果)等常用到的功能,在下面的翻译中有详细说明;

  • 更新维护:这点上我很佩服库的作者,从V1更新到V4,从未背离作者的初衷,一直在对react-native的导航进行优化、封装,而且最让我佩服的一点是,作者好似将react-navigationIssues全都翻看过,库里面将react-navigation可能存在或者已经存在的坑都填上了,而且实时更新。如果有时间,可以查看一下CHANGELOG.md,里面有着全部的更新记录。

export default class App extends React.Component {
static propTypes = {
title: PropTypes.string,
}
render() {
return (
<Provider store={store}>
<Root>
<Router>
<View style={styles.container}>
<Scene key="test" component={Test} title="测试页面" />
<Scene key="chatlist" component={ChatList} title="消息" />
<Scene key="chat" component={Chat} title="聊天" getTitle={this.props.title} initial/>
<Scene key="login" component={Login} title="登录" backTitle="返回聊天" />
<Scene key="signup" component={Signup} title="注册" backTitle="返回聊天" />
</View>
</Router>
</Root>
</Provider>
);
}
}

此路由器的最重要的组件, 所有 <Scene> 组件必须要有一个唯一的 key

父节点<Scene>不能将component作为prop,因为它将作为其子节点的组件。

initial boolean false 设置为true后,会默认显示该页面
component React.Component semi-required 要显示的组件,定义嵌套时不需要Scene,参见示例。

先学一学:

Ref: React Native Basics: Using react-native-router-flux

【共四篇,第三篇是tabs】

Ref: https://github.com/react-navigation/react-navigation

【感觉有了这个就差不多了,一个不错的库】

代码实践:

Ref: React Navigation: Stacks, Tabs, and Drawers

【质量高,有良心,有代码】

侧边栏导航


非常简单的抽屉导航介绍,未来讲解 react-native-router-flux 时作为对比。

  • 属性介绍 

  • 代码分析
/**
* Sample React Native App
* https://github.com/facebook/react-native
*/
'use strict'; import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
PixelRatio,
Text,
Image,
TouchableOpacity,
DrawerLayoutAndroid,
ProgressBarAndroid,
View
} from 'react-native'; class DongFang1 extends Component {
render() {
var navigationView = (
<View style={{flex: 1, backgroundColor: '#ff0'}}>
<Text style={{margin: 10, fontSize: 15, textAlign: 'left'}}>我是抽屉!</Text>
</View>
);
return (
<DrawerLayoutAndroid
drawerWidth = {}
drawerPosition = {DrawerLayoutAndroid.positions.Right}
renderNavigationView= {() => navigationView}
> <View style={{flex: 1, alignItems: 'center'}}>
<Text style={{margin: 10, fontSize: 15, textAlign: 'right'}}>Hello</Text>
<Text style={{margin: 10, fontSize: 15, textAlign: 'right'}}>React Native World!</Text>
</View>
</DrawerLayoutAndroid>
);
}
} const styles = StyleSheet.create({ flex:{
flex:1,
},
}); AppRegistry.registerComponent('DongFang1', () => DongFang1);

[RN] 04 - React Navigation的更多相关文章

  1. [RN] React Navigation 使用中遇到的显示 问题 汇总

    React Navigation 使用中遇到的显示 问题 汇总 https://www.jianshu.com/p/8b1f18affc5d

  2. react-native 学习 ----- React Navigation

    很久没有的登陆博客园了,密码都是找回的,从当年的大学生已经正常的走上了程序员的道路,看到之前发的博客还是写的android,现在自己已经在使用了react-native了. 大学毕业了,做了java后 ...

  3. RN 实战 & React Native 实战

    RN 实战 & React Native 实战 https://abc.xgqfrms.xyz/react-native-docs/ 0.59 https://github.com/xgqfr ...

  4. react-native导航器 react navigation 介绍

    开发环境搭建好之后,想要进一步了解react-native,可以先从react-native官网上的电影列表案例入手: https://reactnative.cn/docs/0.51/sample- ...

  5. React Navigation & React Native & React Native Navigation

    React Navigation & React Native & React Native Navigation React Navigation https://facebook. ...

  6. React Native常用组件之TabBarIOS、TabBarIOS.Item组件、Navigator组件、NavigatorIOS组件、React Navigation第三方

    以下内容为老版本React Native,faceBook已经有了新的导航组件,请移步其他博客参考>>[我是传送门] 参考资料:React Navigation  react-native ...

  7. React-native 导航插件React Navigation 4.x的使用

    React-native 导航插件React Navigation 4.x的使用 文档 英文水平可以的话,建议直接阅读英文文档 简单使用介绍 安装插件 yarn add react-navigatio ...

  8. react navigation goBack()返回到任意页面(不集成redux) 一

    方案一: 一.适用场景:在app端开发的时候,相反回到某一个页面的时候保持跳转页面的所有状态不更新,也就是说不触发新的生命周期. 例如:A——>B——>C——>D 要想从D页面直接返 ...

  9. React Navigation / React Native Navigation 多种类型的导航结合使用,构造合理回退栈

    React Navigation 更新到版本5已经是非常完善的一套导航管理组件, 提供了Stack , Tab , Drawer 导航方式 , 那么我们应该怎样设计和组合应用他们来构建一个完美的回退栈 ...

随机推荐

  1. opencv中图像伪彩色处理(C++ / Python)

    使用OpenCV的预定义的颜色映射来将灰度图像伪彩色化. 1. colormap(色度图)是什么? 假设我们想在地图上显示美国不同地区的温度.我们可以把美国地图上的温度数据叠加为灰度图像——较暗的区域 ...

  2. RavenDb学习(八)高级特性上半部分

    .事务支持 别的关系型数据库和RavenDb一起使用 using (var transaction = new TransactionScope()) { BlogPost entity = sess ...

  3. 选择合适NFC标签

    NFC论坛选择的初始标签格式适用于最广泛的应用程序和装置性能: 类型1基于ISO14443A,目前由Innovision研究和技术公司独家供应 (TopazTM),具有96字节内存,成本低,应用广泛. ...

  4. js 的数值限制可能引起的问题

    源于:https://raw.github.com/ruanyf/jstutorial/gh-pages/grammar/number.md 1. 根据国际标准IEEE 754,64位浮点数格式的64 ...

  5. Graph-DFS-图的深度优先遍历

    #include <iostream> using namespace std; /* 5 5 1 2 1 3 1 5 2 4 3 5 1 2 4 3 5 ---------------- ...

  6. Some Parameter Interpretation On Using Mininet

    MiniNet使用很简单,下面以下面帮助界面截图为例,简单讲述常见的几个命令即可: sudo mn --topo single,3--mac --switch ovsk--controller rem ...

  7. 【转】]监听SMS消息/编程实现短信拦截

    当设备接收到一条新的SMS消息时,就会广播一个包含了android.provider.Telephony.SMS_RECEIVED动作的Intent.注意,这个动作是一个字符串值,SDK 1.0不再包 ...

  8. java 模拟一个单向链表

    class Node { //当前节点 private String data; //下个节点 private Node next; //当前节点 public void setData(String ...

  9. C++复合类型(数组)

    1.数组 数组之所以被称为复合类型, 是因为它是使用其他类型来创建的 例如: short months[12]: 那么格式为 typename arrayname [arraysize]  注意:ar ...

  10. SAP Actual Costing with Material Ledger 激活实际成本后台配置

    Actual Costing with Material Ledger 1      Purpose This configuration guide provides the information ...