引言

react-native-router-flux 是一个基于 react-navigation 路由框架,进一步简化了页面跳转的步骤,并且一直随着 react-navigation升级更新版本。而且使用这个框架的话,可以将全部的页面跳转的处理逻辑都写在一个地方,方便了后续的维护。

先来个简单的demo

如何导入 react-native-router-flux 这个可以看官网,这里我就直接上代码了:

const Root = () => {return (<Router>{/* 这种写法是将全部的跳转页面都放在Root下面 */}<Scene key="root">{/* key 就是给页面的标签,供Actions使用 */}{/* component 设置关联的页面 */}{/* title 就是给页面标题 */}{/* initial 就是设置默认页面*/}<Scenekey="one"component={PageOne}title="PageOne"initial={true}/><Scene key="two" component={PageTwo} title="PageTwo" /></Scene></Router>);
};

PageOne 的核心代码,点击 Text 跳转到下一个页面:

//导入Action的包,处理页面跳转
import { Actions } from 'react-native-router-flux'; const PageOne = () => {return (<View style={styles.container}><Textstyle={styles.welcome}onPress={()=>Actions.two()}>我是Page One</Text></View>);
};

PageTwo 的核心代码:

export default class PageTwo extends Component {render() {return (<View style={styles.container}><Text style={styles.welcome}>我是Page Two </Text></View>)}
}

数据传递与刷新

页面之间的切换自然不会缺少数据的传递,而且这个路由框架可以实时 refresh 当前页面。

先看页面之间传递数据吧,这里添加一个 PageThree 吧:

import {Actions} from "react-native-router-flux"const PageThree = () => {return (<View style={styles.container}><Text style={styles.welcome}//Actions.pop是退回到上一层onPress={() => Actions.pop({//refresh用于刷新数据refresh: {data: '从 three 回到 two'}})}>我是Page Three </Text></View>);
};

很自然的,PageTwo 也要修改一下代码:

import {Actions} from 'react-native-router-flux'; // New codeexport default class PageTwo extends Component {render() {const data = this.props.data || "null";return (<View style={styles.container}><Textstyle={styles.welcome}//添加点击事件并传递数据到PageThreeonPress={() => Actions.three({data: "从 two 传递到 three"})}>我是Page Two </Text><Text style={styles.refresh}//展示从PageThree传回来的数据>refresh:{data}</Text></View>)}
}

最后到 Root.js 添加新的 Scence :

const Root = () => {return (<Router><Scene>//...........<Scenekey="three"component={PageThree}title="PageThree"/></Scene></Router>);
};

可以看到从 PageThree 回到 PageTwo 数据传递并刷新页面的效果,不过如果需要实时刷新当前页面呢?这时就需要使用 Actions.refresh 方法了:

export default class PageTwo extends Component {render() {const data = this.props.data || "null";return (<View style={styles.container}><Textstyle={styles.welcome}onPress={() => Actions.three({data: "从 two 传递到 three"})}>我是Page Two </Text><Textstyle={styles.refresh}onPress={() => Actions.refresh({data: 'Changed data',})}>refresh:{data}</Text></View>)}
}

Tab Scene

通过设置 Scene 属性的 Tabs 可以设置 Tabs 。这个也开发中经常用到的页面效果

//设置tab选中时的字体颜色和标题
const TabIcon = ({focused , title}) => {return (<Text style={{color: focused  ? 'blue' : 'black'}}>{title}</Text>);
};const Root = () => {return (<Router>{/*tabBarPosition设置tab是在top还是bottom */}<Scene hideNavBar tabBarPosition="bottom"><Tabskey="tabbar"swipeEnabledwrap={false}// 是否显示标签栏文字showLabel={false}tabBarStyle={{backgroundColor: "#eee"}}//tab选中的颜色activeBackgroundColor="white"//tab没选中的颜色inactiveBackgroundColor="red"><Scenekey="one"icon={TabIcon}component={PageOne}title="PageOne"/><Scenekey="two"component={PageTwo}title="PageTwo"icon={TabIcon}/><Scenekey="three"component={PageThree}title="PageThree"icon={TabIcon}/></Tabs></Scene></Router>)
};

此时运行就可以看到下面的效果:

转载于:https://www.cnblogs.com/crazycode2/p/9395984.html

react-native 路由 react-native-router-flux相关推荐

  1. React多级路由 React子路由

    React多级路由 React子路由设置 新建一个Home.jsx文件 和Home.css文件 css文件内容就不写了 Home 文件内容如下 为了解决点击Link时,路由变化而子路由页面未变化,所以 ...

  2. 如何将React App转换为React Native

    I have been working on a lot of mobile projects lately - including Cordova, PhoneGap, React Native, ...

  3. react native text换行_基于React+Koa实现React SSR服务端渲染

    React Server-Side Rendering 其实这个概念很早之前就有了解了,出于没有应用场景原因,之前一直都只停留在了解API的层面,未曾去实践.快到周末闲来无事,自己复盘了下之前做的新商 ...

  4. native react 常用指令_React Native 常用的 15 个库

    点赞再看,养成习惯 本文 GitHub https://github.com/qq44924588... 上已经收录,更多往期高赞文章的分类,也整理了很多我的文档,和教程资料.欢迎Star和完善,大家 ...

  5. native react 常用指令_React Native入门基础篇(一)

    学习一次,随处书写.(以下文字来自各大网上资料整理而来,侵删!) 概述 使用React为Android和iOS创建本机应用 React Native将本机开发的最佳部分与React(用于构建用户界面的 ...

  6. native react 折线图_react native中使用echarts

    开发平台:mac pro node版本:v8.11.2 npm版本:6.4.1 react-native版本:0.57.8 native-echarts版本:^0.5.0 目标平台:android端收 ...

  7. native react 更新机制_React Native - 组件的生命周期详解(附:各阶段调用的方法)...

    一个 React Native 组件从它被 React Native框架加载,到最终被 React Native 框架卸载,会经历一个完整的生命周期. 在这个生命周期中,我们可以定义一些生命周期函数, ...

  8. React Native与React的关系及特点

    一.React.React.js和React Native的关系 React是基础框架,是一套基础设计实现理念,开发者不能直接使用它来开发移动应用或网页. 在React之上发展出了React.js框架 ...

  9. React Native之React速学教程

    本文出自<React Native学习笔记>系列文章. React Native是基于React的,在开发React Native过程中少不了的需要用到React方面的知识.虽然官方也有相 ...

  10. 【React】路由详解

    文章目录 Router 介绍 Router 原理 Router 安装 Router 使用 Link 和 NavLink Route 属性 path 属性 exact 属性 Route 组件 compo ...

最新文章

  1. 界面之下:还原真实的MV*模式
  2. 如何用程序删除win 7下SYSTEM权限的目录
  3. 汇编实验2.2 查找匹配字符串(附有详细注释和源代码和相关知识)
  4. 【MATLAB统计分析与应用100例】案例009:创建一个RandStream类对象,调用其randn方法生成标准正态分布随机数
  5. hive 修改cluster by算法_Hive基础之导出数据
  6. php授权验证系统源码-全解开源版
  7. 【Linux】统信UOS桌面壁纸右下角的统信UOS水印怎样去掉
  8. 如何在jsp页面中连接mysql数据库_如何使用JSP访问MySQL数据库
  9. 比特币矿池是什么意思
  10. Cortex-M开发板密码登陆界面
  11. 2016012013 王雪 散列函数的应用及其安全性
  12. 删除密码设置对象(PSO)
  13. ADT(abstract data types)抽象数据类型
  14. 20220522Python3.10安装教程
  15. 计算机无线网络计算机文件共享,无线局域网共享_在同一个无线局域网内如何共享文件?...
  16. 将源码打包成deb软件包
  17. oracle 用户权限设置,oracle用户权限管理使用详解
  18. 踩在云端的温柔!这是我最近穿上就不想脱下来的鞋 | 钛空实测
  19. eclipse neon Java编辑器页面字体更改
  20. 单招考计算机一般考什么科目,单招一般都考什么科目 单招的考试范围是什么...

热门文章

  1. 考研 | 研究生考试入门,送给刚刚进入寒假的大三的你
  2. js根据数组中对象的多个属性值进行排序
  3. linux ipc 漏洞,1月19日Linux发现内核0Day漏洞,编号”CVE-2016-0728“
  4. mysql偏差聚集_My SQL聚合函数
  5. 一款简约多类PHP导航源码
  6. 面试:一文搞懂String、StringBuilder、StringBuffer 区别
  7. Sql server之常用三表联查举例
  8. WordPress 主题教程 #4b:Header 模板 2
  9. LESS vs SASS?选择哪种CSS样式编程语言?
  10. FullCalendar 六:FullCalendar应用——拖动与实时保存