React飞行日记(三) - JSX语法的渲染流程

Jsx的渲染流程

React.js中, 其为我们提供了一种JSX语法, 能够直接在JS文件中进行虚拟DOM代码的编写, 并在编译后转换成真实DOM渲染到页面中, 那么React是怎么把JSX的虚拟DOM转换成真实的DOM?

主要靠两个API : React.createElement | ReactDOM.render

实验代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QkIFt05K-1592818112422)(React.assets/image-.png)]

显示效果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z9T6ZK9C-1592818112427)(React.assets/image-.png)]

渲染步骤
  1. 需要借助babel来帮我们编译JSX语法的代码

    babel网址
    用法如下↓↓↓↓↓↓↓↓
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yi3M0wcY-1592818112430)(React.assets/image-.png)]

  2. jsx语法转换成编译后, <div></div>就变成了React.createElement(...)这样的结构

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9dvzkerX-1592818112434)(React.assets/image-.png)]

    执行React.createElement(...)会返回一个对象, 我称他为 抽象DOM对象 该对象如下

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sPvFm7qi-1592818112436)(React.assets/image-.png)]

    // 被返回的对象
    {
      	type: 'div',
        key: null,
    		ref: null,
        props: {id: 'onde', style: {color: "red"}, childre:[{..},{..}]},
        __proto__: Object
        ...
    }
    
  3. 执行React.render方法 ( 第五篇会重写render方法 )

    1. 会把React.createElement() 生成的对虚拟DOM对象作为第一参数
    2. 并渲染到到传入的第二个参数容器中( 第二参数是容器 )
    3. 最后执行第三个回调函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值