夺命雷公狗-----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完胜。。。。。。。。。。。

时间: 2024-08-14 22:11:18

夺命雷公狗-----React---21--小案例之心情留言板的相关文章

夺命雷公狗jquery---43滚动公告栏案例

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> h1,div{ margin:0; padding:0; font-size:12px; } h1{ width:180px; height:30px; background-color:#369;

夺命雷公狗—angularjs—21—解决angularjs压缩问题

我们在实际的开发中往往离不开js的代码压缩,因为这样可以减轻服务器的压力,是的的方法如下所示: <!DOCTYPE html> <html lang="en" ng-app="myapp"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="js/angular.min.js&quo

夺命雷公狗jquery---34导航条案例之下拉选择

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> body { margin:0; padding:0; } div.menu { margin:0; padding:0; width:100%; height:30px; background:#1

夺命雷公狗---微信开发48----获取用户地理位置接口(3)

这节课程我们来做一个游戏,这个游戏的名字叫“寻找美女做老婆”, 用户该游戏后,每隔5s(秒)会收到他距离未来老婆的信息,如果找到美女后,输入“老婆”即可成功. 这次我们涉及到一个车联网API,我们先来看下他在哪,张成什么样. http://lbsyun.baidu.com/index.php?title=car 找到接口说明,里面有一个测距,如下所示: 我们可以看到这就是他的接口 参数说明以及返回的参数如下所示: 很明显他就是返回一个XML或者是json格式的数据,默认返回的是一个XML格式的数

夺命雷公狗---微信开发47----获取用户地理位置接口(2)

我们现在要做的是查找距离最近的“肯德基”,我们需要通过百度提供的LBS云服务定位距离您最近的肯德基,该程序需要到LBS后台进行相关设置,然后在完成程序 用户在客户端输入“肯德基”公众号就会自动回复距离用户最近的”肯德基“ 废话不多说,我们先到http://developer.baidu.com/里面找到LBS云------再到服务接口--------再到LBS云,如下图所示: 点击进来后,我们首先要获取一个密钥, 然后出了红色框部分填下数据即可,别的地方都不用改,直接提交即可 上面的0.0.0.

夺命雷公狗-----React---9--map数据的遍历

比如我们要实现的是这种效果: 用这种方法来写,她只能写死在哪,没啥意思,所以我们定义一个数据,然后来测试下map方法对她遍历出来的数据 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="./js/react-with-addons.

夺命雷公狗-----React---9--组建嵌套进行数据遍历

先写一个组建... 然后进行嵌套.. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="./js/react-with-addons.js"></script> <script src="

夺命雷公狗-----React---8--react官方提供的组建实现双向绑定

首先要引入她.. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="./js/react-with-addons.js"></script> <script src="./js/react

夺命雷公狗---微信开发46----获取用户地理位置接口(1)

我们先来看下手册有啥要求的先 我们先来写一个小功能,客户端每隔5s(秒)钟自动向公众平台报告自己的地理位置,服务器返回该地理位置给客户端. 我们要先到公众号管理界面里打开他才可以,因为默认的情况下他是关闭的,打开方法如下图所示: 如果开启成功后,他将会显示修改陈功,如下图所示: 我们在从新写过一个index.php的文件,代码如下所示: <?php /** * wechat php test */ //define your token require_once "common.php&q