博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
react开发教程(三)组件的构建
阅读量:6710 次
发布时间:2019-06-25

本文共 1867 字,大约阅读时间需要 6 分钟。

什么是组件

组件化就好像我们的电脑装机一样,一个电脑由显示器、主板、内存、显卡、硬盘,键盘,鼠标...。

组件化开发有如下的好处:

降低整个系统的耦合度,在保持接口不变的情况下,我们可以替换不同的组件快速完成需求。
例如输入框,可以替换为日历、时间、范围等组件作具体的实现。调试方便,由于整个系统是通过组件组合起来的,在出现问题的时候,可以用排除法直接移除组件,或者根据报错的组件快速定位问题,之所以能够快速定位,是因为每个组件之间低耦合,职责单一,所以逻辑会比分析整个系统要简单。
提高可维护性,由于每个组件的职责单一,并且组件在系统中是被复用的,所以对代码进行优化可获得系统的整体升级。

在团队开发中,组件化带来的优势是便于协同开发,由于代码中的耦合度降低了,每个模块都可以分拆为一个组件,例如异步请求组件,路由组件,各个视图组件。

团队中每个人发挥所长维护各自组件,对整个应用来说是精细的打磨。

在Javascript 的开发中,组件化其实和模块化的意义相当,大概是根据功能、业务进行代码划分,使到这部分的代码可以被复用,例如 $、_ 这些工具库就是将功能进行模块化。

其实组件化的本质上和我们以往的模块化并无差别。
只不过模块化是对js进行了模块的打包,而一个组件包含了对应的(css,js,数据)

组件的规范

组件化的封装思路就是面向对象思想;

  1. 基本的封装特性
  2. 简单的生命周期(组件的创建,更新,卸载)
  3. 明确的数据流动(更具参数的不同做出不同的响应)

React组件构建

Web Components通过自定义元素的方式实现组件化,而React的本质就是关心元素的构成,React组件即为组件元素。组件元素被描述成纯粹的JSON对象,意味着可以使用方法或是类来构建。React组件基本由3个部分构成----属性(props)、状态(state)、以及生命周期方法。

React.createClass

用React.creatClass构建组件是React最传统,也是兼容性最好的方法。

const List = React.createClass({        getDefaultProps() {            return {                color : "#f00",                text : "我是列表"            }        },                render() {            const {color,test} = this.props;            return (                
  • {test}
  • ) } })

    调用的时候只需要<List/>,每一次调用都会被编译成React.createElement(List)方法来创建List实例,这意味着每次调用<List/>就会创建一次li;

    ES6 class

    import React, {Component} from 'react';    class List extends Component {        constructor(props) {            super(props)        }                static defaultProps = {            color : "#f00",            text : "我是列表"        };                render() {            const {color,test} = this.props;            return (                
  • {test}
  • ) } }

    无状态函数

    function List({color="#f00",test="我是列表"}){        return (            
  • {test}
  • ) }

    无状态函数构建的组件称为无状态组件,这种构建方式是0.14版本后新增的,官方推崇

    在合适的情况下我们都应该使用这种组件方式。无状态组件不像上述两种方法在调用时会创建新实例,它创建时始终保持了一个实例,避免了不必要的检查和内存分配,做到了内存优化。

    上一篇:

    下一篇:

    转载地址:http://bralo.baihongyu.com/

    你可能感兴趣的文章
    用于.NET Core的ORM
    查看>>
    慎用!BLEU评价NLP文本输出质量存在严重问题
    查看>>
    如何撰写好文档?精益文档的六个实践
    查看>>
    随手记统一监控平台Focus设计解析
    查看>>
    中国平安“豪赌”科技?从产险业务IT变形计聊起
    查看>>
    RSocket:一个面向反应式应用程序的新型应用网络协议
    查看>>
    ElasticSearchDsl
    查看>>
    SciPy达到1.0版本,有了新的治理结构
    查看>>
    IntelliJ IDEA 2018.3 新版本发布,支持 Java 12及Spring Boot增强等特性
    查看>>
    Go语言很好很强大,但我有几个问题想吐槽
    查看>>
    如何在Python中使用LightFM构建可扩展的电子商务推荐系统?
    查看>>
    畅谈云原生(上):云原生应用应该是什么样子?
    查看>>
    取代ZooKeeper!高并发下的分布式一致性开源组件StateSynchronizer
    查看>>
    AlloyTouch实现下拉刷新
    查看>>
    Wiki工具使用感悟
    查看>>
    云因成本高昂屡被关注,上云的价值是什么?
    查看>>
    深入探索JVM自动资源管理
    查看>>
    Go现在接受来自GitHub PR的补丁
    查看>>
    Sonatype收购Vor Security,扩展对Nexus开源组件的支持
    查看>>
    Spark作为ETL工具与SequoiaDB的结合应用
    查看>>