react渲染机制

react组件

class Form extends React.Compoent{

  constructor() {

    super()

  }

  render(){

    return(

    <from><input type="text"/></from>

  )

  }

}

ReactDOM.render((<div><Form/></div>)).document.getElementById(‘app‘)

ReactDOM.render把组件进行开始渲染

React.createEelement()把组件生成一个对象,这个对象把代表一个真是的dom,这个对象就是我们说的虚拟dom,(虚拟dom就是用js对象结构模拟html的dom结构,增删改查先直接操作js对象,最后更新到真正的dom树上)

虚拟出来的dom如下:

{
  type: ‘div‘,
  props: {
    className: ‘test‘,
    children: []
  }
}

虚拟dom 对象还包括react自身需要的属性,比如ref,key

有了虚拟dom,接下来的工作就是把虚拟dom树渲染成真正的dom树

1:react的做法就是根据不同的type构造出相应的渲染对象

2:然后渲染对象使用mountcomponent方法(负责把虚拟dom生成真实的dom)

3:然后循环迭代整个虚拟dom树,生成最终的真实的dom树,最终插入容器节点

// vdom 是第3步生成出来的虚拟 dom 对象

var renderedComponent = instantiateReactComponent( vdom ); // dom node

var markup = renderedComponent.mountComponent();

// 把生成的 dom node 插入到容器 node 里面,真正在页面上显示出来

// 下面是伪代码,React 的 dom 操作封装在 DOMLazyTree 里面

containerNode.appendChild( markup );


原文地址:https://www.cnblogs.com/liangshuang/p/9013243.html

时间: 2024-11-05 14:45:50

react渲染机制的相关文章

webkit 渲染机制

最近看了< webkit技术内幕 >,虽然并不能完全看懂,但是对浏览器的渲染机制也算是有了一个比较完整的认识. 我们从浏览器地址栏输入网址开始到web页面被完整的呈现在眼前,大概的经过了这样一个过程:网址被DNS解析为IP地址 -> 通过IP地址建立TCP连接 -> 发送HTTP请求 -> 服务器处理请求并返回响应 ->  浏览器解析渲染页面 -> 断开TCP连接 可是浏览器是怎么去解析渲染页面的呢?这里就要涉及到浏览器的内核,也就是浏览器的渲染引擎(严格来说应该

浏览器的渲染机制

Google Web Fundamentals 是一个非常优秀的文档,里面讲到了跟web.浏览器.前端的方方面面.我总结一下其中的 Ilya Grigorik 写的 Critical rendering path 浏览器渲染机制部分的内容如下: 几个概念 1.DOM:Document Object Model,浏览器将HTML解析成树形的数据结构,简称DOM. 2.CSSOM:CSS Object Model,浏览器将CSS代码解析成树形的数据结构. 3.DOM 和 CSSOM 都是以 Byte

深入理解Android渲染机制

基础知识 CPU: 中央处理器,它集成了运算,缓冲,控制等单元,包括绘图功能.CPU将对象处理为多维图形,纹理(Bitmaps.Drawables等都是一起打包到统一的纹理). GPU:一个类似于CPU的专门用来处理Graphics的处理器, 作用用来帮助加快格栅化操作,当然,也有相应的缓存数据(例如缓存已经光栅化过的bitmap等)机制. OpenGL ES:是手持嵌入式设备的3DAPI,跨平台的.功能完善的2D和3D图形应用程序接口API,有一套固定渲染管线流程. OpenGL ES详解 D

[转]浏览器渲染机制——一定要放在body底部的js引用

转自:http://blog.csdn.net/u012251421/article/details/50536265 说明: 本文提到的浏览器均是指Chrome. “script标签“指的都是普通的不带其他属性的外联javascript. web性能优化的手段并不是非黑即白的,有些手段过头了反而降低性能,所以在讨论条件和结论的时候,虽然很多条件本身会带来其他细微的负面或正面影响,为了不使论述失去重点,不会扩展太开. 一.从一个面试题说起 面试前端的时候我喜欢问一些看上去是常识的问题.比如:为什

Chromium网页渲染机制简要介绍和学习计划

作为一个浏览器,快速地将网页渲染出来是最重要的工作.Chromium为了做到这一点,费尽了心机,做了大量优化工作.这些优化工作是卓有成效的,代表了当今最先进的网页渲染技术.值得一提的是,这些渲染技术不仅适用于网页渲染,也可以应用在原生系统的UI渲染上.例如,在Android系统上,我们就可以看到两者在渲染技术上的相似之处.本文接下来就对Chromium的网页渲染机制进行简要介绍,并且制定学习计划. 老罗的新浪微博:http://weibo.com/shengyangluo,欢迎关注! Chrom

转---JS 一定要放在 Body 的最底部么?聊聊浏览器的渲染机制

作者:德来 segmentfault.com/a/1190000004292479 如有好文章投稿,请点击 → 这里了解详情 一.从一个面试题说起 面试前端的时候我喜欢问一些看上去是常识的问题.比如:为什么大家普遍把<script src=""></script>这样的代码放在body最底部?(为了沟通效率,我会提前和对方约定所有的讨论都以chrome为例) 应聘者一般会回答:因为浏览器生成Dom树的时候是一行一行读HTML代码的,script标签放在最后面就不

Android渲染机制和丢帧分析

http://blog.csdn.net/bd_zengxinxin/article/details/52525781 自己编写App的时候,有时会感觉界面卡顿,尤其是自定义View的时候,大多数是因为布局的层次过多,存在不必要的绘制, 或者onDraw等方法中过于耗时.那么究竟需要多快,才能给用户一个流畅的体验呢?那么就需要简单了解下Android的渲染机制: Android系统每隔16ms发出VSYNC信号,触发对UI进行渲染,那么整个过程如果保证在16ms以内就能达到一个流畅的画面. 那么

深入Android渲染机制

1.知识储备 CPU: 中央处理器,它集成了运算,缓冲,控制等单元,包括绘图功能.CPU将对象处理为多维图形,纹理(Bitmaps.Drawables等都是一起打包到统一的纹理). GPU:一个类似于CPU的专门用来处理Graphics的处理器, 作用用来帮助加快格栅化操作,当然,也有相应的缓存数据(例如缓存已经光栅化过的bitmap等)机制. OpenGL ES是手持嵌入式设备的3DAPI,跨平台的.功能完善的2D和3D图形应用程序接口API,有一套固定渲染管线流程. 附相关OpenGL渲染流

浏览器的渲染机制,白屏和FOUC

关于浏览器的渲染机制,先要了解一些基本概念: DOM:浏览器解析html构建DOM树 CSSOM:浏览器解析CSS构建CSSOM规则树 Render Tree:DOM和CSSOM合并后生成Render Tree layout:layout:有了Render Tree,浏览器已经能知道网页中有哪些节点.各个节点的CSS定义以及他们的从属关系,从而去计算出每个节点在屏幕中的位置 painting:按照算出来的规则,通过显卡,把内容画到屏幕上 reflow(回流):当浏览器发现某个部分发生了点变化影响