一.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的更多相关文章

  1. ReactNative: 使用导航栏组件-NavigatorIOS组件和Navigator组件

    一.简言 在软件开发中,不论是Web还是App,它们的应用程序都是由很多的功能视图组成的.对于这些组合的视图,如何实现页面间平滑地过渡,应用都有统一的一套跳转机制,这个功能就是路由或者叫导航.应用程序 ...

  2. RN组件备忘录

    1:ActivityIndicator:圆形的loading提示符号. 2:Button:按钮 3:FlatList:高性能列表组件,支持下拉刷新. 4:Image:图片组件,能显示 网络图片.静态资 ...

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

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

  4. RN组件之Switch与Picker

    一.Switch选择开关控件 1.该组件为Android/IOS通用的两种状态的开关组件 2.属性方法 (1)disabled bool:如果该值为true,用户就无法点击switch开关,默认为fa ...

  5. RN组件之ToolbarAndroid

    一.ToolbarAndroid 1.该组件封装了Android平台中的ToolBar组件(只适用于Android平台).一个ToolBar组件可以显示一个Logo图标 以及一些导航图片(例如:菜单功 ...

  6. RN组件之ScrollView

    一.ScrollView 该组件封装了Android平台的ScrollView(滚动组件),并且提供触摸事件"responder"系统功能.使用ScrollView的时候 确保有一 ...

  7. RN组件之ListView

    /** * Created by DaGuo on 2016/4/7. */ 'use strict' import React,{ Component, View, Text, ListView, ...

  8. RN组件之ViewPagerAndroid

    一.ViewPagerAndroid 1.一个允许在子视图之间左右翻页的容器.每一个ViewPagerAndroid的子容器会被视作一个单独的页,并且会被拉伸填满 ViewPagerAndroid.注 ...

  9. RN组件可用属性整理

随机推荐

  1. ubuntu14.04安装OpenVirteX

    官网链接: http://ovx.onlab.us/getting-started/installation/ step1: System requirements: Recommended 4 Co ...

  2. 《转》IIS中配置通配符应用程序映射

    本文转载自龚赤兵 电子工业出版社,如给您带来不便之处,请联系博主. eb开发新体验:ASP.NET 3.5 MVC架构与实战>第13章网站部署,本章主要实现了如何在IIS 6.0中一步一步地成功 ...

  3. Servlet、JSP选择题

    Java EE软件工程师认证考试 试题库-选择题   一.    选择题(包括单选和双选) 1.A 对于B/S架构的工作流程,以下说法正确的是(   )(选择一项) A. 浏览器接受用户的输入--&g ...

  4. mysql优化总结

    SQL优化目的: 降低响应时间 直接影响用户体验度 降低资源使用率 主要体现在IO和CPU上,网络.内存消耗 优化原则: 1.IN子查询改成JOIN2.NOT IN子查询改成LEFT JOIN3.消除 ...

  5. 解决来QQ消息后歌曲音量降低问题

    今天学了一天,晚上听歌放松一下,谁知碰到了一个很纠结的问题,我正在聊天,每当来QQ消息后,我的歌曲音量自动降低,降到非常小,然后我就调高 音量,把音乐的音量调到最大,又把系统音量调到最大,谁知音乐的声 ...

  6. [原]网站跨站点脚本,Sql注入等攻击的处理

    从360安全论坛里找到的一段代码,经过整理封装,直接在站点Global.asax文件或写一个HttpModule来拦截恶意请求即可: http://bbs.webscan.360.cn/forum.p ...

  7. wp8 入门到精通

    <StackPanel Orientation="Vertical"> <StackPanel Orientation="Horizontal" ...

  8. hdu 3466 排序01背包

    也是好题,带限制的01背包,先排序,再背包 这题因为涉及到q,所以不能直接就01背包了.因为如果一个物品是5 9,一个物品是5 6,对第一个进行背包的时候只有dp[9],dp[10],…,dp[m], ...

  9. 【JNI】C向C++改造

    步骤: 1. 把c文件后缀名换成cpp2. Android.mk文件中的hello.c也要换成hello.cpp3. c++的使用的环境变量结构体中,访问了c使用的结构体的函数指针,函数名全部都是一样 ...

  10. 安卓通过putExtra传递数据的几种方式

    通过intent传递数据时,使用以下代码报错: hMap<string, object=""> map=(Map<string, object="&qu ...