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 网站. ...
随机推荐
- 关于浏览器和IIS基础的简单理解
浏览器 输入域名或者IP地址,按回车访问后:发生了什么??IIS是如何工作的?为什么能这么工作?? 1 浏览器和IIS 分别是两个应用程序:浏览器访问网址实际就是 两个应用程序的数据交互往来: ...
- 异常处理--Exception(一)
很诱人的标题,今天不是给大家介绍,而是跟大家讨论些问题. 在做开发的这几年中,大大小小的项目也经历了很多,但无论那个项目中,都没有真正的对Exception进行完整的处理.虽然我们在学C#的时候,经常 ...
- QT creator 调试问题
问题:debug出现“ptrace:不允许的操作.” 解决办法: # may not be appropriate for developers or servers with only admin ...
- JAVA Debug 调试代码
JAVA Debug 调试代码 1.什么时候使用Debug: 程序的运行结果,与你的预期结果不同时,Debug的目的是找错误,而不是该错误: 2.早期调试代码的方式就是打桩: System.out.p ...
- find: ‘/run/user/1000/gvfs’: Permission denied
linux使用命令 find / -name *** 查找文件的时候会遇到以下报错 /gvfs’: Permission denied 其实这个目录是空的,查不查都没关系.所以,以下解决方式比较 ...
- C# 操作iis6、iis7 301
iis6版本方法... iis7以及以上版本方法 using (ServerManager serverManager = new ServerManager()) { ...
- NGINX conf 配置文件中的变量大全 可用变量列表及说明
$args #这个变量等于请求行中的参数.$content_length #请求头中的Content-length字段.$content_type #请求头中的Content-Type字段.$docu ...
- spring事务传播特性实验(2):PROPAGATION_REQUIRED实验结果与分析
本文延续上一文章(spring事务传播特性实验(1):数据准备),在已经准备好环境的情况下,做如下的实验,以验证spring传播特性,加深对spring传播特性的理解. 本次主要验证PROPAGATI ...
- Web应用层协议---HTTP
处于协议栈顶层的应用层协议定义了运行在不同端系统的应用程序进程如何相互传递报文.定义内容如下: 1.交换的报文类型.请求报文和响应报文. 2.各种报文类型的语法,如报文中的各个字段及这这些字段是如何描 ...
- GSON使用笔记
GSON简介 GSON是Google开发的Java API,用于转换Java对象和Json对象,我在这里将记录一下GSON的简单使用 下载GSON 我们可以在其github仓库中下载,也可以使用Mav ...