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. 2019长安大学ACM校赛网络同步赛 B Trial of Devil (递归)

    链接:https://ac.nowcoder.com/acm/contest/897/B来源:牛客网 Trial of Devil 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32 ...

  2. 将数据转为tfrecord格式

    假设emo文件夹下,有1,2,3,4等文件夹,每个文件夹代表一个类别 import tensorflow as tf from PIL import Image from glob import gl ...

  3. Python(3) 进制转换

    2进制 :0b8进制: 0o16进制: 0x10进制:原来的数据 进制转换:bin() 方法:转化为 2进制 >>> bin(10)'0b1010'oct() 方法:转化为 8进制& ...

  4. Springboot配置文件占位符

    一.配置文件占位符 1.application.properties server.port=8088 debug=false product.id=ID:${random.uuid} product ...

  5. 绑定class -vue

    1.值为对象 :class = "{ 'text-red': isActive }" data () { return { isActive : true } } :class = ...

  6. SpringCloud学习系列-Rest微服务构建

    总体介绍 承接着我们的springmvc+mybatis+mysql初级高级课程,以Dept部门模块做一个微服务通用案例Consumer消费者(Client)通过REST调用Provider提供者(S ...

  7. Spring Cloud(2)主要组件应用实例

    SpringCloud SpringCloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.负载均衡.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行 ...

  8. [洛谷P4436] HNOI/AHOI2018 游戏

    问题描述 一次小G和小H在玩寻宝游戏,有n个房间排成一列,编号为1,2,...,n,相邻的房间之间都有一道门.其中一部分门上锁(因此需要有对应的钥匙才能开门),其余的门都能直接打开.现在小G告诉了小H ...

  9. Java——容器(Set)

    [Set接口] <1>Set接口是Collection的子接口,Set接口没有提供额外的方法. <2>实现Set接口的容器类中的元素是没有顺序的,而且不可以重复. <3& ...

  10. apicloud直接上传图片

    function getPicture() { api.confirm({ title : "提示", msg : "选择图片", buttons : [&qu ...