react-native 路由 react-native-router-flux
引言
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相关推荐
- React多级路由 React子路由
React多级路由 React子路由设置 新建一个Home.jsx文件 和Home.css文件 css文件内容就不写了 Home 文件内容如下 为了解决点击Link时,路由变化而子路由页面未变化,所以 ...
- 如何将React App转换为React Native
I have been working on a lot of mobile projects lately - including Cordova, PhoneGap, React Native, ...
- react native text换行_基于React+Koa实现React SSR服务端渲染
React Server-Side Rendering 其实这个概念很早之前就有了解了,出于没有应用场景原因,之前一直都只停留在了解API的层面,未曾去实践.快到周末闲来无事,自己复盘了下之前做的新商 ...
- native react 常用指令_React Native 常用的 15 个库
点赞再看,养成习惯 本文 GitHub https://github.com/qq44924588... 上已经收录,更多往期高赞文章的分类,也整理了很多我的文档,和教程资料.欢迎Star和完善,大家 ...
- native react 常用指令_React Native入门基础篇(一)
学习一次,随处书写.(以下文字来自各大网上资料整理而来,侵删!) 概述 使用React为Android和iOS创建本机应用 React Native将本机开发的最佳部分与React(用于构建用户界面的 ...
- 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端收 ...
- native react 更新机制_React Native - 组件的生命周期详解(附:各阶段调用的方法)...
一个 React Native 组件从它被 React Native框架加载,到最终被 React Native 框架卸载,会经历一个完整的生命周期. 在这个生命周期中,我们可以定义一些生命周期函数, ...
- React Native与React的关系及特点
一.React.React.js和React Native的关系 React是基础框架,是一套基础设计实现理念,开发者不能直接使用它来开发移动应用或网页. 在React之上发展出了React.js框架 ...
- React Native之React速学教程
本文出自<React Native学习笔记>系列文章. React Native是基于React的,在开发React Native过程中少不了的需要用到React方面的知识.虽然官方也有相 ...
- 【React】路由详解
文章目录 Router 介绍 Router 原理 Router 安装 Router 使用 Link 和 NavLink Route 属性 path 属性 exact 属性 Route 组件 compo ...
最新文章
- 界面之下:还原真实的MV*模式
- 如何用程序删除win 7下SYSTEM权限的目录
- 汇编实验2.2 查找匹配字符串(附有详细注释和源代码和相关知识)
- 【MATLAB统计分析与应用100例】案例009:创建一个RandStream类对象,调用其randn方法生成标准正态分布随机数
- hive 修改cluster by算法_Hive基础之导出数据
- php授权验证系统源码-全解开源版
- 【Linux】统信UOS桌面壁纸右下角的统信UOS水印怎样去掉
- 如何在jsp页面中连接mysql数据库_如何使用JSP访问MySQL数据库
- 比特币矿池是什么意思
- Cortex-M开发板密码登陆界面
- 2016012013 王雪 散列函数的应用及其安全性
- 删除密码设置对象(PSO)
- ADT(abstract data types)抽象数据类型
- 20220522Python3.10安装教程
- 计算机无线网络计算机文件共享,无线局域网共享_在同一个无线局域网内如何共享文件?...
- 将源码打包成deb软件包
- oracle 用户权限设置,oracle用户权限管理使用详解
- 踩在云端的温柔!这是我最近穿上就不想脱下来的鞋 | 钛空实测
- eclipse neon Java编辑器页面字体更改
- 单招考计算机一般考什么科目,单招一般都考什么科目 单招的考试范围是什么...
热门文章
- 考研 | 研究生考试入门,送给刚刚进入寒假的大三的你
- js根据数组中对象的多个属性值进行排序
- linux ipc 漏洞,1月19日Linux发现内核0Day漏洞,编号”CVE-2016-0728“
- mysql偏差聚集_My SQL聚合函数
- 一款简约多类PHP导航源码
- 面试:一文搞懂String、StringBuilder、StringBuffer 区别
- Sql server之常用三表联查举例
- WordPress 主题教程 #4b:Header 模板 2
- LESS vs SASS?选择哪种CSS样式编程语言?
- FullCalendar 六:FullCalendar应用——拖动与实时保存