俗话说“万丈高楼平地起”,从这一期开始,我们将使用基于Webpack+Babel的React学习React框架中的一些基础概念。在学习React的过程中经常会把Element、Class和Component这几个基础概念混淆。所以我们看看这些React的概念到底是干什么的,有什么作用。

1. 从ReactDOM.render说起

ReactDOM是React封装DOM的一个软件包,提供了DOM的一些特定方法。render方法就是将React element渲染到事先定义的容器中。

// render方法的定义
ReactDOM.render(
element,
container,
[callback]
)

我们可以把render方法理解为React应用的一个入口,这个方法首先通过判断element中虚拟DOM节点的markup是否是大写还是小写,从而建立相应的渲染。小写的虚拟DOM节点的makeup,我们称之为原生DOM元素,常见的如divspan等。而大写markup的虚拟DOM节点,我们称之为自定义DOM元素。对于原生DOM元素,render方法会直接创建HTML原生的DOM,而对于自定义的DOM元素,render方法会创建组件来定义。

2. Element的作用

所以简单的说,element就是React实现界面内容的最小单元,它代表了虚拟DOM中的一个对象。它描述了组件实例和DOM节点的关系在React中,通过使用React.createElment可以实现虚拟DOM节点。比如我们定义一个element:

const element = React.createElement(
'h1',
{id: 'myElement'},
'hello there!'
)

当然也可以在元素中嵌套组件,由于这种特性,我们可以用元素来描述DOM节点树。

class myCompnent extends React.Component{
render(){
return (
<h1>hello there!<h1>
)
}
} const element = React.createElement(
myCompnent,
null,
null
)

3.组件

组件就是一个方法或者一个类,可以接受一定的输入,之后返回一个React 元素。

五分钟学习React(六):元素(Element)和组件(Component)的更多相关文章

  1. 五分钟学习React(三):纯HTML代码搭建React应用

    上一期我们使用了React官方的脚手架运行React应用.大家可能会觉得这种方法很繁琐,需要配置各种第三方插件.JQuery时代的前端真是让人怀念.这一期,我就带领大家创建一个"怀旧版&qu ...

  2. 五分钟学习React(一): 什么是React

    在前端的世界里,我们要处理的文件不是太多,而是太少.每天开发项目将html.css.js.图片.字体文件都像大杂烩一般加载都网页上.当应用变得越来越臃肿的时候,会发现js用了那么多全局变量,css的继 ...

  3. 五分钟学习React(二):我的第一个Hello World

    我的第一个React应用 接着我们上一期所讲的内容,通过create-react-app脚手架创建的应用,它是基于ES6的语法生成的.我们清空src目录下的文件,并分别创建index.js和index ...

  4. 五分钟学习React(四):什么是JSX

    JSX,即javscript XML,是js内定义的一套XML语法.目前是使用babel作为JSX的编译器.这也是在前几期中载入babel的原因. Facebook引入JSX是为了解决前端代码工程复杂 ...

  5. 五分钟学习React(五):React两种构建应用方式选择

    经过这四期的讲解,我们从Hello World应用入手,解释了React最重要的概念JSX,以及两种不同模式的应用构建方法.这一讲我们着重对比传统模式和新模式下的React项目构建,从而为初学者提供学 ...

  6. 五分钟学习Java8的流编程

    1.概述 Java8中在Collection中增加了一个stream()方法,该方法返回一个Stream类型.我们就是用该Stream来进行流编程的: 流与集合不同,流是只有在按需计算的,而集合是已经 ...

  7. 十分钟学习 react配套的类型检测库——prop-types的运用

    js 有时在定义变量的类型为number 或string 时并不会报错,所以prop-types 是专门用来检测react ,以前的版本是把它放到react架构里面 ,现在作为一个独立的库搬出来了,跟 ...

  8. 正式学习React (六) 项目篇

    https://github.com/huenchao/yingshili 或者点这里 注意事项看ReadME.md 会持续更新,反正就是把之前分析的redux react-redux都用一下,然后会 ...

  9. 照着官方文档学习react

    笨人学习法 10000个小时策略来学习,因为笨.先照着官方文档敲一遍,写一遍. 准备 先要准备环境.搭建一个基于webpack的react环境:Hello ReactJS. demo: https:/ ...

随机推荐

  1. 数据结构与算法(5) -- deque

    vector是单向开口的连续线性空间,deque则是一种双向开口的连续线性空间.所谓双向开口,意思是可以在头尾两端分别做元素的插入和删除操作.stl中deque与vector最大的差异,一在于dequ ...

  2. 关于预测io调用的思考

    什么是预测io 预测io是linux2.6版本内核调用默认的调用程序,对应用程序进行跟踪,统计应用程序使用io情况,在读操作返回之前先停顿6ms时间(linux默认时间),如果这期间有读操作过来,可以 ...

  3. 19.理解slop

    主要知识点: slop的含义(内在原理) slop的用法     一.slop的含义是什么?     query string(搜索文本)中的几个term,要经过几次移动才能与一个document匹配 ...

  4. vue 项目的I18n国际化之路

    I18n (internationalization ) ---未完善 产品国际化是产品后期维护及推广中重要的一环,通过国际化操作使得产品能更好适应不同语言和地区的需求 国际化重点:1. 语言语言本地 ...

  5. jquery源码分析(三)——工具函数

    jQuery.extend({ expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "&quo ...

  6. 【Codeforces 4D】Mysterious Present

    [链接] 我是链接,点我呀:) [题意] 要求长度和宽度都严格递增(选择一个序列) 然后你一开始有一个长度和宽度 要求这个一开始所给的长度和宽度能接在你选择的一段连续的长度宽度的开头 (且保持原来的性 ...

  7. 【Codeforces 1106C】Lunar New Year and Number Division

    [链接] 我是链接,点我呀:) [题意] 题意 [题解] 看了下样例解释就懂了... 每次选择最大最小的两个组合 然后加起来.. [代码] import java.io.IOException; im ...

  8. (39.4) Spring Boot Shiro权限管理【从零开始学Spring Boot】

    在读此文章之前您还可能需要先了解: (39.1) Spring Boot Shiro权限管理[从零开始学Spring Boot] http://412887952-qq-com.iteye.com/b ...

  9. nyoj_289_苹果_20140307

    苹果 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 ctest有n个苹果,要将它放入容量为v的背包.给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱最大值. ...

  10. 编程之美初赛第二场AB

    题目1 : 扑克牌 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 一副不含王的扑克牌由52张牌组成,由红桃.黑桃.梅花.方块4组牌组成,每组13张不同的面值.现在给定52 ...