react里面有几个需要区别开的函数

React.createClass 、React.createElement、Component

首选看一下在浏览器的下面写法:

    <div id="app">
</div>
<script src="../js/react.js"></script>
<script src="../js/react-dom.js"></script>
<script src="../js/browser.min.js"></script>
<script type="text/babel">
var Info = React.createClass({ //创建一个react模板
render:function(){
return <p>createClass----{this.props.you}</p>
}
});
var eleC = React.createClass({ //创建一个react模板
render:function(){
return <div>createElement---{this.props.name}</div>
}
}); var eleProps = {name:"eleC"};
var ele = React.createElement(eleC,eleProps); //创建一个react元素;第一个参数为模板,第二个参数为模板的props //ReactDOM.render是React的最基本方法用于将模板转为HTML语言,并插入指定的DOM节点。ReactDOM.render(template,targetDOM),该方法接收两个参数:第一个是创建的模板,多个dom元素外层需使用一个标签进行包裹
ReactDOM.render(
<div>
<Info you="createClass" />
{ele}
</div>,
document.getElementById('app')
); </script>

  

React.createClass  是创建了一个react模板,使用的时候,像html标签一样,比如上面的info

React.createElement 是创建了一个react元素,相当于把模板具体化,使用的时候,是当做js变量,直接写入,比如上面的 {ele}

以上是在浏览器引入的写法,下面看看,用npm构建的写法

import React, { Component } from 'react';
import ReactDOM from 'react-dom'; class App extends Component { render() {
return (
<div className="App">
这里是app
</div>
);
}
} class Info extends Comment{
render(){
return (
<div>
info
</div>
)
}
} class Ele extends Comment{
render(){
return (
<div>
ele
</div>
)
}
}
var myProps ={ };
var ele = React.createElement(Ele,myProps); ReactDOM.render(<App>
<Info></Info>
{ele}
</App>,document.getElementById('root'));

  

区别在于,使用服务启动,不再需要用 React.createClass 来创建模块,直接使用类,来继承 Component 类即可完成模板创建。。后面使用的方式基本一致。要注意的是内部 初始化 state和props等有区别

React.createClass 、React.createElement、Component的更多相关文章

  1. 转载 React.createClass 对决 extends React.Component

    先给出结论,这其实是殊途同归的两种方式.过去我们一般都会使用 React.createClass 方法来创建组件,但基于 ES6 的小小语法糖,我们还可以通过 extends React.Compon ...

  2. React.createClass和extends Component的区别

    React.createClass和extends Component的区别主要在于: 语法区别 propType 和 getDefaultProps 状态的区别 this区别 Mixins 语法区别 ...

  3. React.createClass vs. ES6 Class Components

    1 1 1 https://www.fullstackreact.com/articles/react-create-class-vs-es6-class-components/ React.crea ...

  4. React 的高级用法(Children、Component、createElement、cloneElement)

    React.Children props.children 代表了所有的子节点. React.Children 用于处理 props.children 的 提供了几个方法 ( map ,foreach ...

  5. React.Component 和 React.PureComponent 、React.memo 的区别

    一 结论 React.Component 是没有做任何渲染优化的,但凡调用this.setState 就会执行render的刷新操作. React.PureComponent 是继承自Componen ...

  6. 25、react入门教程

    0. React介绍 0.1 什么是React? React(有时称为React.js 或ReactJS)是一个为数据提供渲染HTML视图的开源JavaScript库. 它由FaceBook.Inst ...

  7. zepto/jQuery、AngularJS、React、Nuclear的演化

    写在前面 因为zepto.jQuery2.x.x和Nuclear都是为现代浏览器而出现,不兼容IE8,适合现代浏览器的web开发或者移动web/hybrid开发.每个框架类库被大量用户大规模使用都说明 ...

  8. React组件测试(模拟组件、函数和事件)

    一.模拟组件 1.用到的工具 (1)browerify (2)jasmine-react-helpers (3)rewireify(依赖注入) (4)命令:browserify - t reactif ...

  9. 使用webpack、babel、react、antdesign配置单页面应用开发环境

    这是Webpack+React系列配置过程记录的第一篇.其他内容请参考: 第一篇:使用webpack.babel.react.antdesign配置单页面应用开发环境 第二篇:使用react-rout ...

随机推荐

  1. manjaro 设置 国内源

    注意,如果安装过程中出现无法连接服务,请参看第 4条. 1. 设置官方镜像源(包括 core, extra, community, multilib ) $ sudo pacman-mirrors - ...

  2. http://linux-mtd.infradead.org/doc/nand.html nand

    http://linux-mtd.infradead.org/doc/nand.html

  3. Excel相关操作

    public static bool DataSetToExcel(DataSet dataSet, string filePath, bool isShowExcle = true) { DataT ...

  4. Int32 最大的数值是多少???(附十进制十六进制相互转换且包含正负数的java代码)

    正数转二进制很简单,转十六进制也很简单. 那么负数的情况下呢?在计算机中无法识别你给的符号“+”,"-",计算机只认识0和1 那么在二进制中如何表示负数. 先简单介绍一下负数如何转 ...

  5. poj2728 Desert King【最优比率生成树】【Prim】【0/1分数规划】

    含[最小生成树Prim]模板. Prim复杂度为$O(n^2),适用于稠密图,特别是完全图的最小生成树的求解.   Desert King Time Limit: 3000MS   Memory Li ...

  6. 关于Java程序流程控制的整理(未完善)

  7. RabbitMQ性能优化

    修改rabbitmq.config文件 rabbitmq.config文件时rabbitmq的配置文件,他遵守Erlang配置文件定义. rabbitmq.config文件位置: Unix $RABB ...

  8. arcengine新建要素类

    ArcGIS里面新建数据集,看起来简单,平时都是默认创建,实际上好多细节问题我们都没注意到 一.在数据集上新建要素类: How to create a feature class within a f ...

  9. Flink - ShipStrategyType

      对于DataStream,可以选择如下的Strategy, /** * Sets the partitioning of the {@link DataStream} so that the ou ...

  10. UTF8 、unicode 和 Ascii2

    1.http://blog.renren.com/share/68464/3096404244