React 元素渲染学习

元素是构成React应用的最小单位,用来描述我们在屏幕上看到的内容:

const element = <h1>hello</h1>

与浏览器的DOM元素不同,React当中的元素是普通的对象,React DOM可以确保浏览器DOM的数据内容与React元素保持一致。

将元素渲染到DOM中

我们在一个HTML页面中添加一个id="root"的根元素:
<div id="root"></div>在这个根元素中的所有内容都将由React DOM来管理,我们将其称为“根”DOM节点。我们在用React开发应用时一般只会定义一个根节点。如果我们是在一个已有的项目中引入React,我们可能会在不同的部分单独定义React根节点。
渲染方法:ReactDOM.render();
我们将元素传入这个方法,就可以将传入的元素渲染到页面上:

const element = <h1>Hello, world</h1>;
ReactDOM.render(
  element,
  document.getElementById('root')
);

更新元素渲染

我们想想加入我们想我们定义的元素,如何做?当元素被创建后,目前是无法改变其内容和属性的。
一个元素就好像动画里的一帧,代表着页面某一个时间点的样子。
我们目前还没学习state什么的,根据现有的知识,我们想要更新页面的方法只有创建一个新的元素,然后将它传入渲染的方法中,重新渲染。
比如计数器:

function tick(){
  const element = (
    <div>
      <h1>Hello, world!</h1>
      <h2>It is {new Date().toLocaleTimeString()}.</h2>
    </div>
  );
ReactDom.render(
  element,
  document.getElementById('root')
);
}

setInterval(tick,1000);

这个例子,我们每秒传入render一个元素,每秒重新渲染一次。
注意:实际上,大多数时候React应用只会调用一次render方法,后续我们会继续学习。

React只会更新必要的部分

在上一个例子中,感觉上是每秒重新渲染一次,就应该是根节点的所有内容都会被替换重新渲染,我们可以打开控制台查证,并不是如此。

image.png

我们看变化的只有时间,其他的并没有变化。
事实上,React DOM 首先会比较元素内容先后的不同,而在渲染过程中只会更新改变了的部分。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 原教程内容详见精益 React 学习指南,这只是我在学习过程中的一些阅读笔记,个人觉得该教程讲解深入浅出,比目前大...
    leonaxiong阅读 7,866评论 1 18
  • 参考文章:深度剖析:如何实现一个Virtual DOM 算法 作者:戴嘉华React中一个没人能解释清楚的问题——...
    waka阅读 11,227评论 0 21
  • 安装: 概述 React起源于FaceBook的内部项目,因为该公司对市场上所有的JavaScript MVC框架...
    姒沝無痕阅读 4,042评论 0 0
  • 万家灯阑,酒肴起,亲朋各聚。 竹爆响,夜穹流彩,七色光缕。 幼爱老尊希久见,适节克戒常思骥。 新春迎,宜简朴稳平,...
    竹影灯阅读 2,454评论 0 0
  • 01 三年前的春天,我跟浩花掉两人工作一年的积蓄,买了一辆10万出头的小汽车。 浩很喜欢开车,手痒的时候会去租车公...
    非妈当家阅读 3,237评论 0 1

友情链接更多精彩内容