D2.Reactjs 操作事件、状态改变、路由

下面内容代码使用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参数设置可以去官网查看。

时间: 2025-01-05 09:40:30

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

改变窗体的大小(理解鼠标的操作事件和过程)

1.Designer.cs代码 namespace 手动改变自制窗体的大小 { partial class Form1 { /// <summary> /// 必需的设计器变量. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 清理所有正在使用的资源. /// </summary> /// <param name=&

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

记一次解决跨控制器监听开关状态改变的尝试. 为了统一设置UITableViewCell里的内容,自定义了UITableViewCell类的一个基类,命名为SettingCell.SettingCell里显示的内容由数据模型SettingItem提供:在SettingCell里定义一个属性即可. @property (nonatomic, strong) SettingItem *item; 再定义几个SettingItem的子类表示显示不同内容的Cell(如图1).由于所有开关状态的归档和解档都

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

一.什么是路由事件 路由事件是一种可以针对元素树中的多个侦听器而不是仅仅针对引发该事件的对象调用处理程序的事件.路由事件是一个CLR事件. 路由事件与一般事件的区别在于:路由事件是一种用于元素树的事件,当路由事件触发后,它可以向上或向下遍历可视树和逻辑树,他用一种简单而持久的方式在每个元素上触发,而不需要任何定制的代码(如果用传统的方式实现一个操作,执行整个事件的调用则需要执行代码将事件串联起来). 路由事件的路由策略: 所谓的路由策略就是指:路由事件实现遍历元素的方式. 路由事件一般使用以下三

RemoteViews用法二:可以接收点击事件并改变外观的widget

关于widget简单的用法参考:RemoteViews用法一:widget简单用法 这篇博客完成一个可以接收点击事件并改变外观的widget,并简要总结,最后附上源码下载地址. Demo代码: 1.定义Widget布局XML                     /res/layout/widget_layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andr

小程序用户操作事件

用户操作事件 currentTarget   事件绑定的当前组件 bindtap   绑定事件,事件可以绑定在组件上,当达到触发事件,就会执秆逻辑层中对应的事件处理函数 touchstart  手指触摸动作开始 touchend   手指触摸动作结束 touchmove   手指触摸后移动 touchmove   手指触摸动作打断提醒弹窗 tap 手指触摸后离开 longtap   手指触摸后350ms再离开 bindtap   绑定事件 wxnavigateTo   跳转 e.currentT

Windows 10开发基础——指针事件和操作事件(一)

主要内容: 1.指针事件 2.操作事件 1.指针事件 指针事件由各种活动输入源引发,包括触摸.触摸板.笔和鼠标(它们替代传统的鼠标事件).指针事件基于单一输入点(手指.笔尖.鼠标光标),但不支持基于速度的交互.下面是指针事件列表及其相关的事件参数列表: 事件或类 描述 PointerPressed 单根手指触摸屏幕时发生. PointerReleased 该同一触摸接触抬起时发生. PointerMoved 在屏幕上拖动指针时发生. PointerEntered 在指针进入元素的点击测试区时发生

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

[[email protected] ~]# stat /media/6FE5-D831/git-data/IT-DOC/web收藏.txt File: `/media/6FE5-D831/git-data/IT-DOC/web收藏.txt' Size: 624 Blocks: 64 IO Block: 32768 regular file Device: b301h/45825d Inode: 251 Links: 1 Access: (0755/-rwxr-xr-x) Uid: ( 500/

高级控件【安卓5】——对话框操作事件

事件处理接口 接口名称 描述 DialogInterface.OnClickListener 对话框单击事件处理接口 DialogInterface.OnCancelListener 对话框取消事件处理接口 DialogInterface.OnDismissListener 对话框隐藏事件处理接口 DialogInterface.OnKeyListener 对话框键盘事件处理接口 DialogInterface.OnMultiChioceClickListener 对话框多选事件处理接口 Dia

ListView的View回收引起的checkbox状态改变监听等问题解决方案

我的ListView中每行View包含一个ImageView.TextView.CheckBox.当ListView中有一个或一个一行CheckBox被选中就让ListView上面的Button显示,否则就隐藏.因此,需要对每行View中的CheckBox设置监听.我使用CheckBox中的OnCheckedChangeListener监听器,当CheckBox的状态发生改变的时候就会触发这个监听器.先看下我自定义给ListView的Adapter的getView方法中的一些关键代码: 这是ge