import React, { Component } from 'react';
import {
Platform,
StyleSheet,
Text,
View,
Navigator,
TouchableOpacity } from 'react-native'; /*
* 在ReactNative中,有两个实现导航功能的组件:Navigator和NavigatorIOS
* Navigator 同支持android和ios ; NavgatorIOS支持ios
* NavigatorIOS 相对有更对的属性和方法,在UI方面有更多的设置,如:backButtonIcon backButtonTitled onLeftButtonPress等等
*
* 如果想实现更多自定义,建议使用Navigator
*
* */ //1.实现导航功能,页面切换
//2.实现导航功能, 传值(下一篇) /*
* 导航器通过路由对象(route)来分辨不同的场景,每个路由对象都对应一个页面组件,开发者设置什么,导航器显示什么,所以route是导航器中重要的一个对象
*
* 三步操作实现导航功能:
* 1.设置路由对象(告诉导航器要显示哪个页面)
* 创建路由对象,对象的内容自定义,但是必须包含该场景需要展示的页面组件
*
* 2.场景渲染配置(告诉导航器我要什么样的页面跳转效果)
*
* 3.渲染场景(告诉导航器如何渲染页面)
* 利用第一步设置的路由对象进行渲染场景
*
* */
//1.定义第一个页面
var FirstPage = React.createClass({
//按钮onPress事件处理方法
pressPush:function () {
//推出下一级页面
//参数是路由对象,不要再次写 三个步骤
var nextRoute = {
component:SecondPage
}
this.props.navigator.push(nextRoute) },
render:function () {
return(
<View style={[styles.flex,{backgroundColor:"yellow"}]}>
<TouchableOpacity style={styles.btn} onPress={this.pressPush}>
<Text>点击push下一页</Text>
</TouchableOpacity>
</View>
);
} });
//2.第二个页面
var SecondPage = React.createClass({
pressPop:function () {
//返回上一界面
this.props.navigator.pop()
},
render:function () {
return(
<View style={[styles.flex, {backgroundColor:"cyan"}]}>
<TouchableOpacity onPress={this.pressPop}>
<Text>pop返回上一页</Text>
</TouchableOpacity>
</View>
); } }); //
var LessoNavigator = React.createClass({
render:function () {
var rootRoute={
component:FirstPage
}; return(
<Navigator
/*步骤:
* 1. initialRoute
*
* 指定了默认的页面,也就是启动app之后会看到的第一屏幕(启动页)
* 对象的属性是自定义的,这个对象中的内容会在renderScene方法中处理
* 备注:必须包含的属性,component,表示需要渲染的页面组件
*
* */
initialRoute={rootRoute}
initialRoute={{ component: Home, // 要跳转的页面
title:'首页', // 跳转页面导航栏标题
leftButtonTitle:'左边', // 实例化左边按钮
onLeftButtonPress:() => {alert('左边')}, // 左边按钮点击事件
rightButtonTitle:'右边', // 实例化右边按钮
onRightButtonPress:() => {alert('右边')} // 右边按钮点击事件 }}
 

               /*
* 2.configureScene
* 场景渲染的配置 (跳转效果)
*
* 箭头函数
* */
configureScene={(route) => {
//效果:从右侧向左推出
return Navigator.SceneConfigs.PushFromRight;///////////////////////此句没有提示,有问题????
}}
/*
* 3.renderScene
*
* 渲染场景
* 参数:route(第一步创建并设置给导航器的路由对象),navigator(导航器对象)
* 实现:给需要显示的组件设置属性
*
* */ renderScene={(route, navigator ) => {
//从route路由对象中获取页面组件
var Component = route.component;
return(
<Component
navigator={navigator}
route={route}
/>
)
}} /> );
} }); var styles = StyleSheet.create({
flex:{
flex:1,
justifyContent:"center",
alignItems:"center"
},
btn:{
width:150,
height:30,
borderColor:"red",
borderWidth:1,
justifyContent:"center",
alignItems:"center"
} });
												

Navigator导航器的更多相关文章

  1. javascript知识点之DOM与window对象

    在学习javascript过程中只是一知半解好多,碰到自己不知道属性方法,到最后都不知道自己学到了什么 js代码为什么这样写 为什么你知道这方法或属性可以这样用. DOM和window对象 DOM基本 ...

  2. React Native自定义导航条

    Navigator和NavigatorIOS 在开发中,需要实现多个界面的切换,这时候就需要一个导航控制器来进行各种效果的切换.在React Native中RN为我们提供了两个组件:Navigator ...

  3. 第十六节 BOM基础

    打开.关闭窗口 open:蓝色理想运行代码功能 <button onclick="window.open('http://www.baidu.com')">打开窗口&l ...

  4. eclipse中文乱码修改新方法

    方法背景:想看别人的JAVA项目,导入eclipse后出现中文乱码,在设置了所有的工作空间都为UTF-8以后都没有用,并且项目Resource选项没有GBK选项,或统一选择GBK后会使其他项目出现中文 ...

  5. Java - 集成开发环境Eclipse的使用方法和技巧

    00 - Eclipse教程 Eclipse 教程 01 - Eclipse设置编译和运行的环境 建议编译和运行的版本保持一致,否则请特别注意: 低编译,高运行 ---> 可行. 高编译,低运行 ...

  6. 混合开发的大趋势之一React Native之页面跳转

    转载请注明出处:王亟亟的大牛之路 最近事情有点多,没有长时间地连贯学习,文章也停了一个多礼拜,愧疚,有时间还是继续学习,继续写! 还是先安利:https://github.com/ddwhan0123 ...

  7. 在react-native中使用redux

    redux是什么? redux是一个用于管理js应用状态的容器.redux出现时间并不是很长,在它出现之前也有类似功能的模块出现,诸如flux等等.redux设计的理念很简单,似乎最初这个开发团队就有 ...

  8. 《iOS开发全然上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C新手训练营

    编写Hello World应用程序通常被觉得,是学习不论什么编程语言的第一步.在这一章,你将创建iOS版的Hello World应用程序作为起步,高速了解Xcode这个开发iOS应用程序的主要工具. ...

  9. 使用 Eclipse 的 Navigator Link Helper 实现导航器与编辑器的关联

    概要 Link With Editor 是 Eclipse 内置功能中十分小巧,但却异常实用的一个功能.这个开关按钮 (Toggle Button) 出现在各式导航器视图 ( 例如 Resource ...

随机推荐

  1. windows 查看端口被占用进程

    查看占用63243是谁 C:\Users\Administrator>netstat -aon|findstr "63243" TCP 172.27.33.11:63243 ...

  2. PythonQt第一例

    pythonQt第一例源码如下,主要介绍了简单的使用方式,需要注意的是应用程序的debug版本和release版本必须使用同类型的PythonQt库不可交叉使用. 源码地址:http://files. ...

  3. 1.spark的wordcount解析

    一.Eclipse(scala IDE)开发local和cluster (一). 配置开发环境 要在本地安装好java和scala.  由于spark1.6需要scala 2.10.X版本的.推荐 2 ...

  4. SceneBuilder 打不开 .fxml文件,只在任务栏显示

    mark一下,今天下载官网的SceneBuilder 2.X 最近在使用JavaFX,感觉还是很酷的,可是在正常的编辑关闭SceneBuilder 之后,再次打开却打不开了 可是奇怪的是有些 .fxm ...

  5. 哈代平衡 &连锁不平衡

    哈代-温伯格平衡定律(Hardy-Weinberg equilibrium),即HW平衡,是指对于一个大且随机交配的种群,基因频率和基因型频率在没有迁移.突变和选择的条件下会保持不变. 它是建立在一个 ...

  6. 使用word写博客

    目前大部分的博客作者在写博客这件事情上都会遇到以下3个痛点:1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.2.发布到博客或公众号平台 ...

  7. Spring bean管理器 bean实例化的三种方式

    bean实例化的三种方式实现 第一种:使用类的无参数构造方法创建(常用 重要) 第一种实例化方式最常用,实例化类时会通过调用无参构造方法创建.示例代码如下: package spring.com.Us ...

  8. 团体程序设计天梯赛L2-013 红色警报 2017-03-23 22:08 55人阅读 评论(0) 收藏

    L2-013. 红色警报 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 战争中保持各个城市间的连通性非常重要.本题要求你编写一 ...

  9. 深入理解java虚拟机(十二) Java 语法糖背后的真相

    语法糖(Syntactic Sugar),也叫糖衣语法,是英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语.指的是,在计算机语言中添加某种语法,这些语法糖虽然不会对语言 ...

  10. GitHub上创建组织

    4.3. 组织和团队 GitHub 在早期没有专门为组织提供账号,很多企业用户或大型开源组织只好使用普通用户账号作为组织的共享账号来使用.后来,GitHub推出了组织这一新的账号管理模式,满足大型开发 ...