react.js 各种小测试笔记
首先看一个 基础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 各种小测试笔记的更多相关文章
- React.js入门小案例
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title&g ...
- React.js 小书介绍
React.js 小书 Github 关于作者 这是一本关于 React.js 的小书. 因为工作中一直在使用 React.js,也一直以来想总结一下自己关于 React.js 的一些知识.经验.于是 ...
- 移动web端的react.js组件化方案
背景: 随着互联网世界的兴起,web前端开发的方式越来越多,出现了很多种场景开发的前端架构体系,也对前端的要求日益增高,早已经不是靠一个JQuery.js来做前端页面的时代了,而今移动端变化最大,近 ...
- Angular、React.js 和Node.js到底选谁?
为了工作,程序员选择正确的框架和库来构建应用程序是至关重要的,这也就是为什么Angular和React之间有着太多的争议.Node.js的出现,让这场战争变得更加复杂,虽然有选择权通常是一件很棒的事情 ...
- React.js入门笔记
# React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...
- React.js 小书 Lesson16 - 实战分析:评论功能(三)
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson16 转载请注明出处,保留原文链接和作者信息. 接下来的代码比较顺理成章了.修改 Commen ...
- React.js入门笔记(再续):评论框的实现
本案例来自React.js中文官网对应内容. 一. 运行环境 <link rel="stylesheet" type="text/css" href=&q ...
- React.js小书总结
(迁移自旧博客2017 08 27) 第一阶段 react的组件相当于MVC里面的View. react.js 将帮助我们将界面分成了各个独立的小块,每一个块就是组件,这些组件之间可以组合.嵌套,就成 ...
- ReactiveX 学习笔记(26)使用 RxJS + React.js 调用 REST API
JSON : Placeholder JSON : Placeholder (https://jsonplaceholder.typicode.com/) 是一个用于测试的 REST API 网站. ...
随机推荐
- Rabbitmq的调度策略
Rabbitmq的调度策略是指Exchange在收到消息后依据什么规则把消息投到一个或多个队列中保存.它根两个因素相关:Exchange的类型和Exchange和Queue的绑定关系BindingKe ...
- 基于Video4Linux的视频采集模块开发(转)
Linux系统中,摄像头驱动程序安装好后,为了进行视频采集必须加入Video4Linux模块,从而可以通过Video4Linux模块提供的编程接口(API)从摄像头设备中获取图像帧.下面具体研究基于V ...
- 性能优化之mysql索引优化
sql及索引优化 如何通过慢查询日志发现有问题的sql? 查询次数多且每次查询占用时间长的sql通常为pt-query-digest分析的前几个查询 IO大的sql注意pt-query-digest分 ...
- Django 组件-中间件
中间件 中间件的概念 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好 ...
- 【转】Jmeter入门:如何建立和使用Jmeter测试环境
一.工具描述 apache jmeter是100%的java桌面应用程序,它被设计用来加载被测试软件功能特性.度量被测试软件的性能.设计jmeter的初衷是测试web应用, 后来又扩充了其它的功能.j ...
- 杂项-数学软件:Maple
ylbtech-杂项-数学软件:Maple Maple是目前世界上最为通用的数学和工程计算软件之一,在数学和科学领域享有盛誉,有“数学家的软件”之称.Maple 在全球拥有数百万用户,被广泛地应用于科 ...
- orzdba_monitor.sh脚本使用
1.orzdba_monitor.sh脚本使用 ./orzdba_monitor.sh 主要是用nohup同时在后台调用orzdba,启动下面三个命令 [root@node02 scripts]# p ...
- 打开图片并显示在面板上demo
import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; ...
- Linux - samba 服务
暂时关闭 iptables 防火墙 [root@sch01ar ~]# systemctl stop iptables.service 暂时关闭 firewall 防火墙 [root@sch01ar ...
- How To Move a MySQL Data Directory to a New Location on Ubuntu 16.04
16 How To Move a MySQL Data Directory to a New Location on Ubuntu 16.04 PostedJuly 21, 2016 62.1kvie ...