RN组件之Navigator
一.Navigator
1.使用导航器可以在应用的不同场景(页面)间进行切换.导航器通过路由对象来分辨不同的场景.利用renderScene方法,导航栏可以根据
指定的路由来渲染场景.
可以通过configureScene属性获取指定路由对象的配置信息,从而改变场景的动画或者手势,查看Navigator.SceneConfigs来获取默认
的动画和更多的场景配置选项
2.导航方法
getCurrentRoutes() :获取当前栈里的路由,也就是push进来,没有pop掉的那些
jumpBack():跳回之前的路由,当然前提是保留现在的,还可以再跳回来,会保留原样.
jumpForward():上一个方法跳到之前的路由,这个跳回来.
jumpTo(route):跳转到已有的场景并且不卸载.
push(route):跳转到新的场景,并且将场景入栈,可以稍后跳转过去.
pop():跳转回去并且卸载掉当前场景
replace(route):用一个新的路由替换掉当前场景
replaceAtIndex(route,index):替换掉指定序列的路由场景
replacePrevious(route):替换掉之前的场景
immediatelyResetRouteStack():用新的路由数组来重置路由栈
popToRoute(route):pop到路由指定的场景,其他场景将会卸载
popToTop():pop到栈中的第一个场景,卸载掉所有的其他场景
3.属性
configureScene function :可选的函数,用来配置场景动画和手势.带两个参数调用,一个是当前路由,一个
是当前的路由栈.然后它应该返回一个场景配置对象.
(route,routeStack) =>Navigator.SceneConfigs.FloatFromRight
initialRoute object:定义启动时加载的路由,路由是导航栏用来识别渲染场景的一个对象.initialRoute
必须是initalRouteStack中的一个路由.initialRoute默认为initialRouteStack中
最后一项.
initailRouteStack object:提供一个路由集合来初始化,如果没有设置初始路由的话则必须设置该属性.
如果没有提供该属性,它将被默认设置成一个只含有initialRoute的数组.
navigationBar node: 提供一个在场景切换的时候保持的导航栏
navigator object:可选参数,提供从父导航器获得的导航器对象
onDidFoucus function :已废弃,使用navigationContext.addListener('didifocus',callback)来替代.
每当导航切换完成或初始化之后,调用此回调,参数为新场景的路由.
onWillFocus function:已废弃,使用navigationContext.addListener('willfocus','callback')来代替.
会在导航切换之前调用,参数为目标路由
renderScene function:必要参数,用来渲染指定路由的场景,调用的参数是路由和导航器
sceneStyle View stlye 将会应用在每个场景的容器上的样式
push()和pop()之间来回掉数据,大概格式
onPress={this.navigator.push({
location:''
extramParam:{
param1,
callBack:()=>this.setState({...});
}
});
}
另一个页面
onPress={
()=>{
if(this.props.extraParams && this.props.extraParams.callBack){
this.props.extraParams.callBack({...});
}
this.props.navigator.pop();
}
}
示例:
/**
* Created by Administrator on 2016/4/4.
* Navigator组件使用,在App入口页面定义Navigator
*/
import React,{
AppRegister,
Platform,
BackAndroid,
Navigator,
Component, } from 'react-native';
import { Provider } from 'react-redux';
import store from './redux/store';
import Splash from './pages/Splash'; class App extends Component {
componentWillMount (){
if(Platform.OS==='android'){
BackAndroid.addEventListener('hardwareBackPress',this.onBackAndroid);
}
}
componentWillUnmout (){
if(Platform.OS==='android'){
BackAndroid.addEventListener('hardwareBackPress',this.onBackAndroid); }
}
onBackAndroid (){
const nav=this.navigator;
const routers=nav.getCurrentRoutes();
if(routers.length>1){
nav.pop();
return true;
}
return false;
}
/*初始路由*/
initialRoute ={
component:Splash,
};
/*路由切换特效*/
configureScene (){
if(Platform.OS==='ios'){
return Navigator.SceneConfigs.PushFromRight;
}
return Navigator.SceneConfigs.FloatFromBottom; }
/*定义下一个路由*/
renderScene (route,navigator){
const Component=route.component;
return (
<Component {...route.params} navigator={navigator}/>
);
}
render(){
return (
<Provider store={store} key="provider">
<Navigator
ref={nav => {this.navigator=nav}}
initialRoute={this.initialRoute}
configureScene={() =>this.configureScene()}
renderScene={(route,navigator) =>this.renderScene(route,navigator)}
/> </Provider>
);
} }
AppRegister.register('MyProject',() => App);
RN组件之Navigator的更多相关文章
- ReactNative: 使用导航栏组件-NavigatorIOS组件和Navigator组件
一.简言 在软件开发中,不论是Web还是App,它们的应用程序都是由很多的功能视图组成的.对于这些组合的视图,如何实现页面间平滑地过渡,应用都有统一的一套跳转机制,这个功能就是路由或者叫导航.应用程序 ...
- RN组件备忘录
1:ActivityIndicator:圆形的loading提示符号. 2:Button:按钮 3:FlatList:高性能列表组件,支持下拉刷新. 4:Image:图片组件,能显示 网络图片.静态资 ...
- React Native常用组件之TabBarIOS、TabBarIOS.Item组件、Navigator组件、NavigatorIOS组件、React Navigation第三方
以下内容为老版本React Native,faceBook已经有了新的导航组件,请移步其他博客参考>>[我是传送门] 参考资料:React Navigation react-native ...
- RN组件之Switch与Picker
一.Switch选择开关控件 1.该组件为Android/IOS通用的两种状态的开关组件 2.属性方法 (1)disabled bool:如果该值为true,用户就无法点击switch开关,默认为fa ...
- RN组件之ToolbarAndroid
一.ToolbarAndroid 1.该组件封装了Android平台中的ToolBar组件(只适用于Android平台).一个ToolBar组件可以显示一个Logo图标 以及一些导航图片(例如:菜单功 ...
- RN组件之ScrollView
一.ScrollView 该组件封装了Android平台的ScrollView(滚动组件),并且提供触摸事件"responder"系统功能.使用ScrollView的时候 确保有一 ...
- RN组件之ListView
/** * Created by DaGuo on 2016/4/7. */ 'use strict' import React,{ Component, View, Text, ListView, ...
- RN组件之ViewPagerAndroid
一.ViewPagerAndroid 1.一个允许在子视图之间左右翻页的容器.每一个ViewPagerAndroid的子容器会被视作一个单独的页,并且会被拉伸填满 ViewPagerAndroid.注 ...
- RN组件可用属性整理
随机推荐
- Recover Rotated Sorted Array
Given a rotated sorted array, recover it to sorted array in-place. Clarification What is rotated arr ...
- 1.2 中国象棋将帅问题进一步讨论与扩展:如何用1个变量实现N重循环?[chinese chess]
[题目] 假设在中国象棋中只剩下将帅两个棋子,国人都知道基本规则:将帅不能出九宫格,只能上下左右移动,不能斜向移动,同时将帅不能照面.问在这样条件下,所有可能将帅位置.要求在代码中只能使用一个字节存储 ...
- 43. 动态规划求解n个骰子的点数和出现概率(或次数)[Print sum S probability of N dices]
[题目] 把N个骰子扔在地上,所有骰子朝上一面的点数之和为S.输入N,打印出S的所有可能的值出现的概率. [分析] 典型的动态规划题目. 设n个骰子的和为s出现的次数记为f(n,s),其中n=[1-N ...
- 更改Apache默认网站根目录
Apache服务器网站根目录配置是个比较基本的操作,之前经常用,现在记一下笔记 打开Apache的配置文件,一般在Apache安装目录下的conf/httpd.conf配置文件中修改, 找到 Docu ...
- windows电脑变成wifi热点命令
netsh wlan set hostednetwork mode=allow ssid=WIFI_NAME key="abcdefgh" netsh wlan start hos ...
- August 6th, 2016, Week 32nd, Saturday
It is not the mountain we conquer, but ourselvess. 我们征服的不是高山,而是我们自己. Difficulties and obstacles, jus ...
- svn插件subclipse使用http代理同步svn时出现异常(解决)
现象描述: 对项目进行“与资源库进行同步”时弹出对话框显示以下错误信息: 同步 SVNStatusSubscriber 时报告了错误.1 中的 0 个资源已经同步. 同步 /MMonitorLogis ...
- platform_device与platform_driver
转自:http://blog.csdn.net/zhandoushi1982/article/details/5130207 做Linux方面也有三个多月了,对代码中的有些结构一直不是很明白,比如pl ...
- phpstorm取消自动保存并标识修改的文件为星星标记
PhpStorm是一个轻量级且便捷的PHP IDE,其旨在提供用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查. 自从使用上了phpstrom后就放弃了zendstudio, ...
- 如何解决adb devices 端口被占用的问题zz
在win xp ,win 7 上使用adb时, 越来越多的人出现了 adb devices 命令长时间无响应.adb start-server 失败.eclipse adt初始化时卡在dbms-ini ...