React底层 render, createElement 方法作用梳理

Posted 哈娄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了React底层 render, createElement 方法作用梳理相关的知识,希望对你有一定的参考价值。

目录

 1.createElement方法作用

2. render方法作用

3.setState方法


 

react核心方法有ReactDom.render, React.createElement, setState三种方法。webpack+babel 会将 jsx 转换成 React.createElement(type, props, ...children)。 

正常写组件 

function App() {
  return (
      <p className="title">hello world</p>
  );
}
ReactDOM.render(<APP />, document.getElementById("root"))

被babel转换之后 

function App() {
  return React.createElement(
    "p",
    { className: "title" },
    "hello world"
  );
}
ReactDOM.render(React.createElement(APP, null), document.getElementById("root"));

 1.createElement方法作用

  • createElement接受三个参数(类型div或者 class与函数组件,属性class之类的,其他的文案内容),React.createElement(type, props, ...children)
  • 根据不同类型的组件,不同的处理 返回AST(抽象语法树结构),供render使用

因为有class,function不同组件 需要不同处理逻辑,并且两个的typeof类型都属于function无法区分 ??

  • 所以声明一个Component函数,内部声明一个对象变量, class组件声明时extends React.Component然后在render函数内进行判断是否有对象变量来区分是class还是function组件

 

2. render方法作用

  • render方法接受两个参数 reactDom.render(jsx, container) 
  • 将虚拟dom vnode转换成 真实dom node,然后添加到 container 上进行显示

 

3.setState方法

可以看我的另一篇对于setState 梳理的文章---- setState源码解析

以上是关于React底层 render, createElement 方法作用梳理的主要内容,如果未能解决你的问题,请参考以下文章

react怎么在render里面写style

react props与render成员函数

React 学习笔记

[react] render方法的原理你有了解吗?它返回的数据类型是什么?

react中createFactory, createClass, createElement分别在什么场景下使用,为什么要这么定义?

Build your own React_1 createElement函数