首先看一个 基础html  至于其中的 js 问价大家去官网下载就好了。

<html>
<head>
<script src="../build/react.js"></script>
<script src="../build/react-dom.js"></script>
<script src="../build/browser.min.js"></script>
</head>
<body>
<div id="test"></div>
<script type="text/babel"> </script>
</body>
</html>

1在input框中输入值点击按钮获取其中的值在console.log中打印。

var TestRef = React.createClass({
handleClick : function(){
console.log(this.refs.Inputref.value);
},
render:function(){
return (<div>
<input type="text" ref="Inputref"/>
<input type="button" value="TEXT" onClick={this.handleClick}/>
</div>); }
}); ReactDOM.render(
<TestRef/>,
document.getElementById('test')
);

2

//2 组建通讯 属性的用法
/**
* 当输入框的值改变的时候上面hello后面的值也发生改变
* 当Test1 组建创建 执行getInitialState(这个方法只运行一次 在创建组建的时候)方法 设置状态 name 的默认值为空
* 然后执行render 方法 渲染 此时调用Test组建 由于组建Test中name 属性的值是空 所以页面第一次会显示 hello word
* 当用户在输入框中输入数据的时候 出发 onChange 执行handleChange 方法 这个方法中
* setState 更新name 的状态为输入框的值。此时在组建Test 中的属性name 的值发生改变 所以会随之变化
*/

var Test =React.createClass({
render:function(){
return <div>hello,{this.props.name ? this.props.name :'word!'}!</div>;
}
});
var Test1 = React.createClass({
getInitialState:function(){
return {name:''};
},
handleChange:function(event){
this.setState({name:event.target.value})
},
render:function(){
return(
<div>
<Test name={this.state.name}/>
<input type="text" onChange={this.handleChange}/>
</div>
);
}
}); ReactDOM.render(
<Test1/>,
document.getElementById('test')
);

3

// 组建通讯 状态 属性的用法
/**
* 状态,属性的用法
* 场景:点击提交的时候 获取textarea的值和select 选中的值。用console.log 打印出来
* 最后render 渲染的时候是Test1组建 所以先看Test1组建 创建的时候 定义了2个状态 names数组 selectvalue
* 渲染的时候 也加载了<Test>组建 给组建设置了一个属性selectName 值等于Test1中的状态 selectvalue
* 组建Test1中当下拉框的值改变的时候触发handleOnchange方法 设置状态 selectvalue的值为下拉框中选中的值。
* 在Test 组建中 创建的时候 设置状态 inputValue为空 渲染的时候 当输入框的值改变的时候出发handleONE方法
* 设置状态inputValue 的值为输入框的值。 当点击Submit的时候出发 handleTWO 方法 获取状态inputValue的值和属性selectName的值
*

    var Test =React.createClass({
getInitialState:function(){
return {inputValue:''};
},
handleONE:function(event){
this.setState({inputValue:event.target.value});
},
handleTWO:function(){
console.log("textarea value is:"+this.state.inputValue+"----selectValue:"+this.props.selectName);
},
render:function(){
return (
<div>
<textarea placeholder="please input string" onChange={this.handleONE}>
</textarea>
<input type="button" value="Submit" onClick={this.handleTWO}/>
</div>
);
}
}); var Test1 = React.createClass({
getInitialState:function(){
return{
names:['xiaoming','xiaowang','xiaohong'],
selectvalue:'',
}
},
handleOnchange:function(event){
this.setState({selectvalue:event.target.value});
},
render:function(){
var optionArr = [];
for (var option in this.state.names) {
optionArr.push(<option key={option} value={this.state.names[option]}>{this.state.names[option]}</option>);
};
return(
<div>
<select onChange={this.handleOnchange}>
{optionArr}
</select>
<Test selectName={this.state.selectvalue}/>
</div>
);
} });
ReactDOM.render(
<Test1/>,document.getElementById('test')
);

4 组建的生命周期  初始化阶段

// React   有三个阶段 初始化阶段 运行中阶段 销毁阶段
// React 初始化阶段
var HelloWorld = React.createClass({
//设置默认属性
getDefaultProps: function () {
console.log("getDefaultProps, 1")
},
//设置默认状态
getInitialState: function () {
console.log("getInitialState, 2");
return null;
},
//在渲染之前调用
componentWillMount: function () {
console.log("componentWillMount, 3")
},
//渲染
render: function () {
console.log("render, 4")
return <p ref="childp">Hello, {(function (obj) {
if (obj.props.name)
return obj.props.name
else
return "World"
})(this)}</p>
},
//组建渲染完成之后调用
componentDidMount: function () {
console.log("componentDidMount, 5")
},
});
ReactDOM.render
(<div>
<HelloWorld></HelloWorld>
</div>,
document.getElementById('test')
);

看结果

5 组建的生命周期 运行中阶段

// React   有三个阶段 初始化阶段 运行中阶段 销毁阶段
// React 运行中阶段触发顺序
var HelloWorld = React.createClass({
componentWillReceiveProps: function () {
console.log("componentWillReceiveProps 1");
},
shouldComponentUpdate: function () {
console.log("shouldComponentUpdate 2");
return true;
},
componentWillUpdate: function () {
console.log("componentWillUpdate 3")
},
render: function () {
console.log("render 4");
return <p>Hello, {this.props.name ? this.props.name : "World"}</p>;
},
componentDidUpdate: function() {
console.log("componentDidUpdate 5");
},
});
var HelloUniverse = React.createClass({
getInitialState: function () {
return {name: ''};
},
handleChange: function (event) {
this.setState({name: event.target.value});
},
render: function () {
return <div>
<HelloWorld name={this.state.name}></HelloWorld>
<br/>
<input type="text" onChange={this.handleChange} />
</div>
},
});
ReactDOM.render
(<div>
<HelloUniverse></HelloUniverse>
</div>,
document.getElementById('test')
);

默认情况下   当输入数据时

6  mixin 的用法 :复用  类似于公共方法  提高代码的复用性

//Mixin  用法
var MixinFunction ={
handleChange:function(key){
var that =this
// 这里的this 代表的是HelloUniverse 这个组建。
//如果return 中用this 的话 this 代表的就是 这个函数的本身 所以用that变量去代替
return function(event){
var Common={};
Common[key] = event.target.value;
that.setState(Common);
}
}
}; var HelloUniverse = React.createClass({
mixins:[MixinFunction],
getInitialState:function(){
return {name:'',name2:''};
}, render:function(){
return(
<div>
<input type="text" onChange={this.handleChange('name')}/><hr/>
<input type="text" onChange={this.handleChange('name2')}/>
<p>input_value_name:{this.state.name}</p>
<p>input_value_name2:{this.state.name2}</p>
</div>
);
}
}); ReactDOM.render(
<div>
<HelloUniverse></HelloUniverse>
</div>,
document.getElementById('test')
);

看结果:

初始: 结果:实现了双向绑定 

react.js 各种小测试笔记的更多相关文章

  1. React.js入门小案例

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title&g ...

  2. React.js 小书介绍

    React.js 小书 Github 关于作者 这是一本关于 React.js 的小书. 因为工作中一直在使用 React.js,也一直以来想总结一下自己关于 React.js 的一些知识.经验.于是 ...

  3. 移动web端的react.js组件化方案

     背景: 随着互联网世界的兴起,web前端开发的方式越来越多,出现了很多种场景开发的前端架构体系,也对前端的要求日益增高,早已经不是靠一个JQuery.js来做前端页面的时代了,而今移动端变化最大,近 ...

  4. Angular、React.js 和Node.js到底选谁?

    为了工作,程序员选择正确的框架和库来构建应用程序是至关重要的,这也就是为什么Angular和React之间有着太多的争议.Node.js的出现,让这场战争变得更加复杂,虽然有选择权通常是一件很棒的事情 ...

  5. React.js入门笔记

    # React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...

  6. React.js 小书 Lesson16 - 实战分析:评论功能(三)

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson16 转载请注明出处,保留原文链接和作者信息. 接下来的代码比较顺理成章了.修改 Commen ...

  7. React.js入门笔记(再续):评论框的实现

    本案例来自React.js中文官网对应内容. 一. 运行环境 <link rel="stylesheet" type="text/css" href=&q ...

  8. React.js小书总结

    (迁移自旧博客2017 08 27) 第一阶段 react的组件相当于MVC里面的View. react.js 将帮助我们将界面分成了各个独立的小块,每一个块就是组件,这些组件之间可以组合.嵌套,就成 ...

  9. ReactiveX 学习笔记(26)使用 RxJS + React.js 调用 REST API

    JSON : Placeholder JSON : Placeholder (https://jsonplaceholder.typicode.com/) 是一个用于测试的 REST API 网站. ...

随机推荐

  1. 编写浏览器和Node.js通用的JavaScript模块

    长期以来JavaScript语言本身不提供模块化的支持, ES6中终于给出了 from, import等关键字来进行模块化的代码组织. 但CommonJS.AMD等规范已经被广为使用,如果希望你的Ja ...

  2. 虚拟路由冗余协议VRRP

    一.VRRP简介 虚拟路由冗余协议VRRP(Virtual Router Redundancy Protocol)通过把几台路由设备联合组成一台虚拟的路由设备,将虚拟路由设备的IP地址作为用户的默认网 ...

  3. c# 数据库通用类DbUtility

    DbProviderType数据库类型枚举 /// <summary> /// 数据库类型枚举 /// </summary> public enum DbProviderTyp ...

  4. Qt学习笔记(1) hello world

    Qt的简介: Qt是一个跨平台的C++ GUI库实现,原本只是以为它只提供一些图形接口,看来我还是低估了它,采用文档Qt学习之路2开始学习,不知道这个文档是不是有点老了,管他呢,先了解下. 搭建环境: ...

  5. linux下踢出已登录用户

    通过xshell登录到linux,看到如下所示,有3个用户,但是前面两个不知在哪登录的了,那就踢出吧. 先确认一下自己是哪个 顺便注意一下“whoami”和“who am i”的不同 然后踢出前面两个 ...

  6. CStdioFile的Writestring无法写入中文的问题

    解决UNICODE字符集下CStdioFile的Writestring无法写入中文的问题 2009-12-01 23:11 以下代码文件以CStdioFile向无法向文本中写入中文(用notepad. ...

  7. GOF23设计模式之模板方法模式(template method)

    一.模板方法模式概述 模板方法模式是编程中经常使用的模式.它定义了一种操作中的算法架构,将某些步骤延迟到子类中实现.这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤. (1) ...

  8. java代码FileInputStream的复制粘贴练习

    所有的输入输出流都是对于程序来说的,这个图是实现文件内容的复制粘贴功能的e 首先把文件读到哦程序里,然后把程序读出到文件l package com.a.b; //这个复制和粘贴-----------首 ...

  9. 简单的PL/SQl链接远程ORACLE数据库方法

    简单的PL/SQl链接远程ORACLE数据库方法 PLSQL Developer新手使用教程 pasting

  10. cloudera manager卸载流程

    注意:卸载Cloudera Manager后,根据需要保留或者删除集群中的Hadoop数据.下面的命令没有删除Hadoop数据,可以在控制台的Hadoop 和MapReduce /配置/选项卡,查看H ...