下面内容代码使用ES6语法

一、组件的操作事件:

1、先要在组件类定义内定义操作事件的方法,如同event handler。若我需要监听在组件内的Button的点击事件onClick,首先定义监听方法,代码如下:

 handleClick() {
//TODO
}

2、在contructor 函数,bind(this)。

 constructor(props) {
super(props);
this.handleClick = this.handleClick.bind(this);
}

3、在render方法内,显式绑定事件

 render() {

        return <div>
<button onClick={this.handleClick}>click</button>
</div>;
}

经过以上操作即会触发监听事件方法

二、组件状态state

  组件,我理解其实就是wpf的控件,那么state就是wpf中的依赖属性了,其功能如依赖属性其中的功能很类似,state的改变会改变组件的UI变化或者进行一些逻辑操作。

1、设置初始状态,即在contructor函数上设置组件初始state,

 constructor(props) {
super(props);
this.state = {
liked: false,
opacity: 1
};
}

2、在事件中可以利用setState()设置新的状态,如在handleclick事件改变state,如下:

handleClick() {
this.setState({ liked: !this.state.liked });
}

state改变后促使组件重新执行render(),进而改变了UI。

三、路由

  reactjs可以使用单页面搭建整个网站或者APP,那么路由机制就十分需要,方便我们来实际一个页面来构建多个页面和页面的架构。React-Router是一个十分实用的官方插件,提供进行导航等操作。

1、安装插件

npm install -S react-router

2、使用

使用react-router 就像使用一般的插件,如下:

import React from 'react';
import { render } from 'react-dom';
import { Router, Route,IndexRoute, Link, browserHistory, hashHistory } from 'react-router';
import App from './compoments/App';
import ABout from './compoments/ABout';
import Home from './compoments/Home';
render((<Router history={browserHistory}>
<Route path="/" component={App} >
<IndexRoute component={Home}/>
<Route path="/home" component={Home} />
<Route path="/about" component={ABout} />
</Route> </Router>), document.getElementById("container"));

其中App,Home,About 都是其他文件定义的组件。

  Router的history属性设置是设置Router将使用哪种URL,例如使用hashHistory,路由的切换由URL的hash变化决定,即URL的#部分发生变化,即上面访问about页面,URL路径将是localhost:8080/#/about;例如使用browserHistory,将会调用浏览器的URL,即访问about页面,URL路径将是localhost:8080/about。

  更多Router参数设置可以去官网查看。

D2.Reactjs 操作事件、状态改变、路由的更多相关文章

  1. MSDN 杂志:UI 前沿技术 - WPF 中的多点触控操作事件

    原文  MSDN 杂志:UI 前沿技术 - WPF 中的多点触控操作事件 UI 前沿技术 WPF 中的多点触控操作事件 Charles Petzold 下载代码示例 就在过去几年,多点触控还只是科幻电 ...

  2. javascript 中状态改变触发事件

    转 有限状态机:是一个非常有用的模型,可以模拟世界上大部分事物. 它有三个特征: * 状态总数(state)是有限的. * 任一时刻,只处在一种状态之中. * 某种条件下,会从一种状态转变(trans ...

  3. iOS:使用代理模式监听开关状态改变事件

    记一次解决跨控制器监听开关状态改变的尝试. 为了统一设置UITableViewCell里的内容,自定义了UITableViewCell类的一个基类,命名为SettingCell.SettingCell ...

  4. 微信小程序开发——列表分页上拉加载封装实现(订单列表为例,订单状态改变后刷新列表滚动位置不变)

    业务需求: 业务需求是给订单列表添加分页功能,也就是上拉加载这种每次只请求加载固定数量的数据. 需求分析: 对业务来说就是简单的分页上拉加载,但是对于技术实现来说,除了要处理分页数据的累加加载,还要处 ...

  5. jquery的api以及用法总结-数据/操作/事件

    数据 .data() 在匹配元素上存储任意相关数据或返回匹配的元素集合中的第一个元素的给定名称的数据存储的值 .data(obj) 一个用于更新数据的键/值对 .data()方法允许我们再dom元素上 ...

  6. 关于页面数据未保存改变路由(beforeunload,beforeRouteLeave)

    一下内容为笔者个人理解,如有出入还请大佬指出不胜感激 页面有数据未保存,用户离开页面分为两种 1 . 直接关闭浏览器标签 或者点击浏览器后退按钮 离开当前页面 2. 在页面内改变路由,或则刷新页面(不 ...

  7. 背水一战 Windows 10 (69) - 控件(控件基类): UIElement - Manipulate 手势处理, 路由事件的注册, 路由事件的冒泡, 命中测试的可见性

    [源码下载] 背水一战 Windows 10 (69) - 控件(控件基类): UIElement - Manipulate 手势处理, 路由事件的注册, 路由事件的冒泡, 命中测试的可见性 作者:w ...

  8. WPF路由事件二:路由事件的三种策略

    一.什么是路由事件 路由事件是一种可以针对元素树中的多个侦听器而不是仅仅针对引发该事件的对象调用处理程序的事件.路由事件是一个CLR事件. 路由事件与一般事件的区别在于:路由事件是一种用于元素树的事件 ...

  9. stat file 查看文件的 最新的被访问时间 最近的修改时间 最近的状态改变时间

    [root@NB ~]# stat /media/6FE5-D831/git-data/IT-DOC/web收藏.txt File: `/media/6FE5-D831/git-data/IT-DOC ...

随机推荐

  1. 【转载】我眼中的Oracle性能优化

    我眼中的Oracle性能优化 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角 ...

  2. 1000【入门】熟悉一下Online Judge的环境

    var a,b:longint; begin read(a,b); writeln(a+b); end. #include <stdio.h> int main() { int a,b; ...

  3. hdu-5525 Product(费马小定理)

    题目来源:http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=644&pid=1003 前面用奇偶性约掉2, ...

  4. 自定义一个类似UIAlertView的弹出框

    这个是和UIAlertView类似,但是可以自定义view的样式废话不多说,上代码: 首先第一步:创建一个继承自View的类如: #import <UIKit/UIKit.h> @clas ...

  5. php操作redis简单例子

    <?php //在PHP里操作Redis //Redis就是php的一个功能类 //创建Redis对象 $redis = new Redis(); //链接redis服务器 $redis -&g ...

  6. contiki-rime-单跳单播

    rucb是单跳单播的最顶层,将数据以块为单位进行传输(Bulk transfer). ruc,Reliable communication,保证可靠通信,主要实现确认和序列功能. suc,Stubbo ...

  7. Python之路 day2 字典练习题之 三级菜单

    #Author:ersa ''' 程序: 三级菜单 要求: 打印省.市.县三级菜单 可返回上一级 可随时退出程序 ''' menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{ ...

  8. ant 错误 Specified VM install not found: type Standard VM, name jdk1.6.0_27

    ant 错误 ant Specified VM install not found: type Standard VM, name jdk1.6.0_27 原因: 安装了新的jdk, 在workspa ...

  9. zookeeper的zoo.cfg的配置

    zookeeper的默认配置文件为zookeeper/conf/zoo_sample.cfg,需要将其修改为zoo.cfg.其中各配置项的含义,解释如下: tickTime:CS通信心跳时间 Zook ...

  10. AS3和js相互通信要点分析

    目标:在html页面里可以使用事件来影响到swf文件的内容,swf文件也可以影响html里js代码的内容 一.新建flash文件,用Flash CC试用版新建一个TextArea.fla的源文件,不添 ...