美文网首页
React组件化

React组件化

作者: 多彩的鱼 | 来源:发表于2017-04-06 11:36 被阅读0次

    reactjs的最大的特性就是组件化,组件化的目的就是为了能够进行复用,减少代码的冗余。(ES6语法请自行找资料学习)

    需求:

    1、用户能够在记事本中添加新事件
         2、用户能够对事件进行删除和编辑
         3、对正在进行编辑的事件,可以进行撤销

    最终效果图:


    记事本效果
    一、组件拆分

    1、按钮有自己的方法(事件)如果项目中有大量的按钮,则可以将按钮单独的做成一个组件,该案例中按钮就只有一个功能,故按钮不做拆分。
       2、列表中的项目分为可编辑和不可编辑的项目,可以将列表项拆分成两个组件,带输入框的和不带输入框进行展示的。

    二、实现js代码逻辑

    1、代码和页面进行分离,分别创建app.js和main.css文件
    文件说明:app.js用来承载react的代码逻辑。main.css是我们自定义的样式。
       2、页面的整体结构

    <div class="container">
      <div class="row">
        <h3 class="text-center">React记事本</h3>
        <div class="col-md-12">
            <button class="btn btn-success glyphicon glyphicon-plus menu-add">
                添加心事
            </button>
            <ul class="list-group">
                <li class="list-group-item">
                    济南的风景真的挺不错的。。。。
                    <a href="#" class="item-right glyphicon glyphicon-remove"></a>
                    <a href="#" class="item-right glyphicon glyphicon-edit"></a>
                </li>
                <li class="list-group-item">
                    北京今天的车真的太堵了。。。。
                    <a href="#" class="item-right glyphicon glyphicon-remove"></a>
                    <a href="#" class="item-right glyphicon glyphicon-edit"></a>
                </li>
                <li class="list-group-item">
                    <input type="text">
                    <i class="glyphicon glyphicon-share"></i>
                    <i class="glyphicon glyphicon-remove"></i>
                </li>
            </ul>
        </div>
    </div>
    

    </div>
    main.css 文件代码

    @charset "utf-8";
    a{
        text-decoration: none;
    }
    .menu-add{
        margin: 5px 0 10px;
    }
    .item-right{
          float: right;
          margin: 0 5px ;
    }
    .list-group-item  input[type="text"]{
        outline: none;
        border:0;
        border-bottom: 1px solid #000000;
    }
    

    本人使用的是webstrom编辑器,webstrom编辑器能够识别react的JSX语法,需要进行设置,配置如下:文件(files) →设置(setting) → 语言和框架(language) →javascript → javascript language version 选择React JSX

    webstome JSX配置

    app.js文件代码:

     /**
     * Created by Lenovo on 2017/4/6.
     */
    //展示列表组件
    const Items = React.createClass({
    render(){
        return <li className="list-group-item">
            济南的风景真的挺不错的。。。。
            <a href="#" className="item-right glyphicon glyphicon-remove"></a>
            <a href="#" className="item-right glyphicon glyphicon-edit"></a>
        </li>;
    }
    });
    //编辑类表组件
    const ItemEditor = React.createClass({
      render(){
          return <li className="list-group-item">
              <input type="text"/>
              <i className="glyphicon glyphicon-remove"></i>
              <i className="glyphicon glyphicon-share"></i>
         </li>;
      }
    });
    
    //使用react进行渲染
    ReactDOM.render(
      <div>
        <button className="btn btn-success glyphicon glyphicon-plus menu-add">
            添加心事
        </button>
        <Items/>
        <ItemEditor/>
      </div>,
      document.getElementById('content')
    );
    

    代码说明:
    1、React中使用cearteClass方法创建组件。每一个组件对应的是一个类(类似于强类型语言java或c#中的类)组件的名字采用首字母大写的方式(必须否则报错)
    2、render 方法能够对组件中的html代码进行渲染。在JSX中,html中使用的类样式都要使用className进行指定!
    3、调用ReactDOM的render方法时,html的代码段必须在外围有一个容器,这个和js中的对象一致。例如:a,b,c 这种并列的形式ReactDOM在渲染的时将报错。你必须这样d(a,b,c)(a,b,c,d为html标签,希望你自行测试体会下!)
    4、render方法的第二个参数指定要渲染到的容器。
    下一节,将探讨React数据的绑定

    相关文章

      网友评论

          本文标题:React组件化

          本文链接:https://www.haomeiwen.com/subject/xwmfattx.html