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. vue-cli proxyTable中跨域中pathRewrite 解释

      问:proxyTable 里面的pathRewrite里面的‘^/iclient’:'' 什么意思? 答:用代理, 首先你得有一个标识, 告诉他你这个连接要用代理. 不然的话, 可能你的 html ...

  2. Vue Google浏览器插件 Vue Devtools无法使用的解决办法

    1.插件安装不必多说  一定要用Vue.js 开发版    Vue.min.js 在控制面板就不会显示 2.本地调试 用的是file://协议 修改插件允许访问文件网址  打上对勾

  3. 神经风格转换Neural Style Transfer a review

    原文:http://mp.weixin.qq.com/s/t_jknoYuyAM9fu6CI8OdNw 作者:Yongcheng Jing 等 机器之心编译 风格迁移是近来人工智能领域内的一个热门研究 ...

  4. Codeforces 935 简单几何求圆心 DP快速幂求与逆元

    A #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #def ...

  5. maven 依赖显示红线 pom文件不显示红线的一种可能问题

    pom文件引用的是CDH的jar包 而没有配置CDH的仓库 导致maven找不到资源  ,依赖显示红色波浪,并且在仓库内生成了一堆.lastupdate文件 解决: 1. 删除本地仓库内所有的.las ...

  6. html+css 在图片上添加文字

    html <view class="container"> <image class="" src="{{book.image}}& ...

  7. java定义时间

    import java.text.SimpleDateFormat; import java.util.Date; SimpleDateFormat format=new SimpleDateForm ...

  8. 【04】Python 深拷贝浅拷贝 函数 递归 集合

    1 深拷贝浅拷贝 1.1 a==b与a is b的区别 a == b    比较两个对象的内容是否相等(可以是不同内存空间) a is b  比较a与b是否指向同一个内存地址,也就是a与b的id是否相 ...

  9. 【LuoguP3747】[六省联考2017] 相逢是问候

    题目链接 题意 给定一个长度为 n 的序列 a , 给定一个正整数 c 每次修改操作是把一段区间内的数 \(x_i\) 修改为 \(c^{x_i}\) 询问区间和模 p 的结果 Sol 修改是把一个数 ...

  10. 关于softmax稳定性问题

    因为softmax中指数函数,很容易超出计算机表达的最大值,所以采用分子分母同时乘N的方法,N一般为最大值.