夺命雷公狗-----React---21--小案例之心情留言板
这个功能如果是用传统型的jquery来写都要花费很多时间才可以完成的案例,
亲测jquery配合bootstrap来写和bootstrap配合react.js来写,不知不觉中有点震惊。。。
jquery版本代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link rel="stylesheet" href="./css/bootstrap.css">
<script src="./js/jq18m.js"></script>
<script src="./js/bootstrap.js"></script> </head>
<body>
<div class="container">
<br><br>
<div class="well">
<textarea class="form-control" rows="10"></textarea>
<br>
<span>150</span>
<button class="btn btn-default btn-primary pull-right" id="sub">OK</button>
<button class="btn btn-default pull-right" id="pic">Add Pic</button>
</div>
</div>
<script>
//$('#sub').attr('disabled',true);
$('#sub').prop('disabled',true);
$('textarea').on('input',function(){
//alert('test');
var len = $(this).val().length;
if(len>0){
$('#sub').prop('disabled',false); }else{
$('#sub').prop('disabled',true);
}
$('span').text(150 - len);
}); $('#pic').on('click',function(){
$(this).toggleClass('uppic');
var len = $('textarea').val().length;
if($(this).hasClass('uppic')){
$('span').text(150 - len - 24);
//已经upload了图片
$(this).text('√ upload_OK');
}else{
//还没upload图片
$(this).text('Add Pic');
$('span').text(150 - len);
} //判断下看下是否有内容
var lens = $('span').text();
if(lens< 150){
$('#sub').prop('disabled',false);
}else{
$('#sub').prop('disabled',true);
}
});
</script>
</body>
</html>
react.js版本如下:
<!DOCTYPE>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="./css/bootstrap.css">
<script src="./js/jq11_1.js"></script>
<script src="./js/bootstrap.js"></script>
<script src="./js/react.js"></script>
<script src="./js/react-dom.js"></script>
<script src="./js/browser.min.js"></script>
<style>
*{ margin:0px; padding:0px;} </style>
</head>
<body>
<div id="dome" class="container"></div>
<div id="test"></div>
<script type="text/babel">
var Fix = React.createClass({
getInitialState:function(){
return{
text:'',//表示大文本域的内容
uploaded:false //表示是否上传图片,默认否
}
},
//计算剩余字数的方法
fontCount:function(){
//总数:150字
//要考虑text的长度和是否已经上传图片了
if(this.state.uploaded){
return 150 - 25 -this.state.text.length;
}else{
return 150 - this.state.text.length;
}
},
handleChange:function(e){
this.setState({
text:e.target.value
}); },
handleUpload:function(){
this.setState({
uploaded:!this.state.uploaded
});
},
render:function(){
return(
<div>
<br /><br />
<div className="well">
<textarea className="form-control" rows="10" onChange={this.handleChange} >
{this.props.text}</textarea>
<br />
<span>{this.fontCount()}</span>
<button className="btn btn-default btn-primary pull-right"
disabled={this.state.text.length== 0 && !this.state.uploaded}>OK</button>
<button className="btn btn-default pull-right" onClick={this.handleUpload}>
{this.state.uploaded ? "√ upload_OK":"Add Pic"}</button>
</div>
</div>
);
}
});
ReactDOM.render(
<Fix />,
document.getElementById('dome')
);
</script>
</body>
</html>
效果相同,但是代码量和逻辑处理react完胜。。。。。。。。。。。
夺命雷公狗-----React---21--小案例之心情留言板的更多相关文章
- 夺命雷公狗—angularjs—21—解决angularjs压缩问题
我们在实际的开发中往往离不开js的代码压缩,因为这样可以减轻服务器的压力,是的的方法如下所示: <!DOCTYPE html> <html lang="en" n ...
- 夺命雷公狗-----React---12--添加类和样式
<!DOCTYPE> <html> <head> <meta charset="utf-8"> <title></ ...
- 夺命雷公狗-----React---11--添加css样式的方法
<!DOCTYPE> <html> <head> <meta charset="utf-8"> <title></ ...
- 夺命雷公狗-----React---10--组建嵌套进行数据遍历
先写一个组建... 然后进行嵌套.. <!DOCTYPE html> <html lang="en"> <head> <meta char ...
- 夺命雷公狗-----React---9--map数据的遍历
比如我们要实现的是这种效果: 用这种方法来写,她只能写死在哪,没啥意思,所以我们定义一个数据,然后来测试下map方法对她遍历出来的数据 <!DOCTYPE html> <html l ...
- 夺命雷公狗-----React---8--react官方提供的组建实现双向绑定
首先要引入她.. <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- 夺命雷公狗-----React---7--组建的状态props和state
props:组建初始要渲染的数据,他是不可以改变的 state:组建状态发生改变,调用render重新渲染数据 我们来写一个例子: <!DOCTYPE html> <html lan ...
- 夺命雷公狗-----React---6--props多属性的传递
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 夺命雷公狗-----React---5--props对象的传递
提示:props的值是不可以改变的... <!DOCTYPE html> <html lang="en"> <head> <meta ch ...
随机推荐
- Struts2基础数据校验和框架校验
一:三种校验的方式 1.用validate()方法实现数据校验 2.用execute()方法实现数据校验 3.用validateXxx()方法实现数据校验 1.用validate()方法实现数据校验 ...
- javascript学习之时间组件
写了一个时间组件,哪里需要哪里调(菜鸟级别,大牛路过就Ok了): 先有一个HTML文件: <!doctype> <html> <head> <title> ...
- 获取文件hash值
public string getFilesMD5Hash(string file) { //MD5 hash provider for computing the ...
- 諾基亞定制的Android系統名為 Z Launcher
N1這款產品似乎沒有諾基亞的傳統風格,搭載Android系統以及酷似iPad mini的外觀,都在向外界傳遞著一個信號:諾基亞在變化.不過,沒有了移動設備部門的諾基亞,仍然心系消費電子市場,N1會是個 ...
- windows下读取磁盘扇区数据
在Windows下,磁盘可以看做是一个文件,其文件名为\\\\.\\PhysicalDriveX,其中X表示磁盘的编号,例如\\\\.\\PhysicalDrive0表示的是第0号磁盘,如果需要读取一 ...
- Java中&&和&的区别
Java中&&和&都是表示与的逻辑运算符,都表示逻辑运输符and,当两边的表达式都为true的时候,整个运算结果才为true,否则为false. &&的短路功能 ...
- Oracle数据库基础知识1
DDL语句 1.表的创建 CREATE TABLE table_name(); 例如: CREATE TABLE USER_E( id NUMBER (5), name VARCHAR(20), ge ...
- A Taxonomy of Computer Organizations
COMPUTER OR GANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION
- 几何服务,cut功能,输入要素target(修改前)内容。
几何服务,cut功能测试,输入要素target(修改前)内容. {"geometryType":"esriGeometryPolyline","geo ...
- java中的接口interface
关于接口 接口描述了实现了它的类拥有什么功能.因为Java是强类型的,所以有些操作必须用接口去约束和标记.接口作为类的能力的证明,它表明了实现了接口的类能做什么. 类似与class,interface ...