var index = 1;// index的最外层初始值,亦是全局

var MyPage = React.createClass({
//构成工具栏组件,根据hasBackButton的值为backButton常量赋值,有则渲染出按钮组件,没有则为空。
// 注意:返回按钮的onclick绑定了handleClick的方法,为了弹出提示和移除页面
renderToolbar: function(route, navigator) {
const backButton = route.hasBackButton
? <Ons.BackButton onClick={this.handleClick.bind(this, navigator)}>Back</Ons.BackButton>
: null;
//返回包含上面定义好的backButton内容以及标题的Toolbar组件
return (
<Ons.Toolbar>
<div className='left'>{backButton}</div>
<div className='center'>{route.title}</div>
</Ons.Toolbar>
);
}, // 单击处理事件:在方法被调用时弹出notification的confirm框并根据response值决定是否剔出navigator的数组的最大值
// 这里的response不知道是什么意思,是变化幅度吗?
//通过打印发现,此处的response是confirm框的确认操作和取消操作,确认是1,取消是0,但是是怎么实现的呢?
// 通过这里打印的navigator对象发现里面重要的数组:pages,routes,routesBeforePop
// 从后两者的比较中可以看出多页面是如何实现backup的历史记忆的,他们只是一个记忆数组,按跳转顺序记录页面对象
// 而pages数组则pushPage保存的是已创建的所有页面信息
handleClick: function(navigator) {
ons.notification.confirm('Do you really want to go back?')
.then((response) => {
console.log("response:" + response);
console.log(navigator);
if (response === 1) {
console.log(navigator);
navigator.popPage();
console.log(navigator);
setTimeout("console.log(navigator)",3000);
}
});
}, // 为navigator数组存入页面、同时赋值title为第几个另一个页面、为hasBackButton赋值true,因为是第n层页面了所以理应具备按钮
pushPage: function(navigator) {
navigator.pushPage({
title: `This is new page ${index}`,
hasBackButton: true
});
// 每调用一次pushPage方法,title索引值就增加1
index++;
}, // 使用Page组件构成页面,属性有title以及渲染好的工具栏
renderPage: function(route, navigator) {
return (
<Ons.Page key={route.title} renderToolbar={this.renderToolbar.bind(this, route, navigator)}>
<section style={{margin: '16px', textAlign: 'center'}}>// section是什么,ons的组件?
<Ons.Button onClick={this.pushPage.bind(this, navigator)}>// 使得按钮具有生成页面的功能,调用pushPage
Push Page
</Ons.Button>
</section>
</Ons.Page>
);
}, // 正式渲染显示Navigator组件,属性主要是引入写好的的renderPage,initialRoute是设定首页的title和是否有按钮的常量的默认值
render: function() {
return (
<Ons.Navigator
renderPage={this.renderPage}
initialRoute={{
title: 'First page',
hasBackButton: false
}}
/>
);
}
}); ons.ready(function() {
ReactDOM.render(<MyPage />, document.getElementById('app'));
});

React-onsenui之RouterNavigator组件解读的更多相关文章

  1. react native之组织组件

    这些组件包括<TabView>,<NavigatorView>和<ListView>,他们实现了手机端最常用的交互和导航.你会发现这些组件在实际的项目中会非常有用. ...

  2. React和Vue的组件更新比较

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px "Helvetica Neue"; color: #404040 } p. ...

  3. reactjs-swiper react轮播图组件基于swiper

    react轮播图组件基于swiper demo地址:http://reactjs-ui.github.io/reactjs-swiper/simple.html 1. 下载安装 npm install ...

  4. React Native之倒计时组件的实现(ios android)

    React Native之倒计时组件的实现(ios android) 一,需求分析 1,app需实现类似于淘宝的活动倒计时,并在倒计时结束时,活动也结束. 2,实现订单倒计时,并在倒计时结束时,订单关 ...

  5. React Native 学习-组件说明和生命周期

    组件的详细说明(Component Specifications) 当通过调用 React.createClass() 来创建组件的时候,你应该提供一个包含 render 方法的对象,并且也可以包含其 ...

  6. React:快速上手(2)——组件通信

    React:快速上手(2)——组件通信 向父组件传递数据 父组件可以通过设置子组件的props属性进行向子组件传值,同时也可以传递一个回调函数,来获取到子组件内部的数据. 效果演示 子组件是输入框,父 ...

  7. 初学React:定义一个组件

    接着聊React,今天说说如何创建一个组件类. <!DOCTYPE html> <html lang="en"> <head> <meta ...

  8. React后台管理系统-file-uploader组件

    1.React文件上传组件github地址: https://github.com/SoAanyip/React-FileUpload 2.Util里边新建file-uploader文件夹,里边新建i ...

  9. 前端笔记之React(二)组件内部State&React实战&表单元素的受控

    一.组件内部的State 1.1 state state叫状态,是每一个类式组件都有的属性,但函数式组件,没有state. state是一个对象,什么值都可以定义. 在任何类式组件的构造函数中,可以用 ...

随机推荐

  1. C# wpf image绑定viewModel没有显示图片

    在wpf绑定图片,用viewModel的图片绑定image 我是用viewModel.cs public class viewModel:INotifyPropertyChanged { #regio ...

  2. 对数据集做标准化处理的几种方法——基于R语言

    数据集——iris(R语言自带鸢尾花包) 一.scale函数 scale函数默认的是对制定数据做均值为0,标准差为1的标准化.它的两个参数center和scale: 1)center和scale默认为 ...

  3. Linux之目录与路径

    特殊的目录: “.”,代表此层目录 “..”,代表上一层目录 “-”,代表前一个工作目录 “~”,代表“目前用户身份”所在的主文件夹 “~account”,代表account这个用户的主文件夹(acc ...

  4. Linux 安装FTP服务

    Linux 安装FTP服务,简单入门 环境: 虚拟机:Oracle VM VirtualBox. 系统:CentOS 7. (1)判断是否安装了ftp: rpm -qa | grep vsftpd 或 ...

  5. 十、S3C2440 开发资源

    10.1 S3C2440 内部资源 1.2V 内核供电, 1.8V/2.5V/3.3V 储存器供电, 3.3V 外部 I/O 供电,具备 16KB 的指令缓存和 16KB 的数据缓存和 MMU 的微处 ...

  6. sqlserver数据库脱机和分离的区别

    脱机和分离的区别: 分离和脱机都可以使数据库不能再被使用,但是分离后需要附加才能使用,而脱机后只需联机就可以用了. 附加数据库报错: 无法打开物理文件 XXX.mdf".操作系统错误 5:& ...

  7. Quick BI的宝藏工具——交叉表

    对于普通的表格展示数据,相信大家都非常熟悉了,今天给大家介绍的是BI领域的分析利器-交叉表,这个在BI分析场景中使用占比最多的分析利器.通过交叉表对数据的承载和管理,用户可以一目了然地分析出各种场景指 ...

  8. R which

    setwd("E:/courses/molecular biology/homework1st") genes <- read.table('genes.txt',sep = ...

  9. 【BZOJ2460】元素(拟阵)

    题意:给定n个物品,每个物品有属性x和价值y,要求从中选出一些使得价值和最大并且其中没有属性xor和为0的非空子集 n<=1000,x<=1e18,y<=1e4 思路:没有xor和为 ...

  10. 【PowerOJ1756&网络流24题】最长k可重区间集问题(费用流)

    题意: 思路: [问题分析] 最大权不相交路径问题,可以用最大费用最大流解决. [建模方法] 方法1 按左端点排序所有区间,把每个区间拆分看做两个顶点<i.a><i.b>,建立 ...