元素渲染

元素是构成REACT应用的最小砖块

元素描述了你在屏幕上想看到的内容。

const element =<h1>Hello,world</h1>;

与浏览器的DOM元素不同,REACT元素是创建开销极小的普通对象。REACT DOM会负责更新DOM来与REACT元素保持一致。

注意:

你可能会将元素与另一个被熟知的概念——“组件”混淆起来。我们会在下一个章节介绍组件。组件是由元素构成的。我们强烈建议你不要觉得繁琐而跳过本章节,应当深入阅读这一章节。

将一个元素感染为DOM

假设你的HTML文件某处有一个<div>;

<div id="root"></div>

我们将其称为“根”DOM节点,因为该节点内的所有内容都将由REACT DOM管理。

仅使用REACT构建的应用通常只有单一的根DOM节点。如果你在将REACT集成进一个已有应用,那么你可以在应用中包含任意多的独立根DOM节点。

想要将一个REACT元素渲染到根DOM节点中,只需要它们一起传入ReactDOm.render():

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

页面上会展示出“Hello,world”

更新已渲染的元素

REACT元素是不可变对象。一旦被创建,你就无法更改它子元素或着属性。一个元素就像电影的单贞:它代表了某个特定时刻的UI。

根据我们已有的只是,更新Ui唯一的方式是创建一个全新的元素,并将其传入REACTDOM.render()。

考虑一个计时器的例子:

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

setInterval(tick,1000);

这个例子会在setInterval()回调函数,每秒都调用ReactDOM.render()。

注意:

在实践中,大多数 React 应用只会调用一次 ReactDOM.render()。在下一个章节,我们将学习如何将这些代码封装到有状态组件中。

我们建议你不要跳跃着阅读,因为每个话题都是紧密联系的。

React只更新它需要更新的部分

REACT DOM会将元素和它的子元素与它们之前的状态进行比较,并只会进行必要的更新来使DOM达到预期的状态。

你可以使用浏览器的检查元素工具查看上一个例子来确认这一点。

尽管没一秒我们都会新建一个描述整个UI树的元素,REACT DOM只会更新实际改变了的内容,也就是例子中的文本节点。

根据我们的经验,考虑UI在任意给定时刻的状态,而不是随时间变化的过程,能够消灭一整类的BUG。

原文地址:https://www.cnblogs.com/landv/p/12000573.html

时间: 2024-10-21 12:51:37

元素渲染的相关文章

Vuejs - 花式渲染目标元素

Vue.js是什么 摘自官方文档: Vue (读音 /vju?/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合.另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动. 对比其他框架? 一般提到一个框架时,大家都喜欢跟其他框架作对比,以说服读者去使用它,但是这里就不做对比了,是不是很失望?每个人都有每个人的

使用CSS3的appearance属性改变元素的外观

大家都知道每个浏览器对HTML元素渲染都不一样,比如说"button",在chrome和ff中,渲染出来的效果都是不尽相同的.这样一来就有了今天这个思路,利用浏览器的对元素的默认渲染风格,我们可以使用"appearance"属性对任何元素的渲染风格改变,最简单的来说,我要把"a"链接默认显示成"按钮"风格,那么我们可以使用"appearance"设置为"button". "ap

桌面透明窗口程序渲染

市面上基本所有的3D游戏都依赖一个普通的windows窗口,包含标题栏.边框.最小化.最大化.关闭按钮.窗口的大小决定了玩家可视的游戏空间,整个窗口的像素都被游戏内容填充满,窗口背景不是透明的.渲染时,只要创建一个主渲染缓冲区,将各元素渲染在上面,再显示就可以了. 本文介绍一种方法,窗口的背景是透明的,窗口中只渲染主要的游戏元素,比如主角,而windows桌面就是舞台,你可以看到你的角色在桌面上奔跑,还可以用鼠标与它交互,如图: 采用类似技术的游戏有"哈姆宝宝"."宠物王国&

CSS 3 学习——transform 3D转换渲染

以下内容根据官方规范翻译,没有翻译关于SVG变换的内容和关于矩阵计算的内容. 一般情况下,元素在一个无景深无立体感的平面(flat plane)上渲染,这个平面就是其包含块所处的平面.同时,页面上的其他元素也共享这个平面.2D变换函数虽然能改变元素的表现,但是这个被改变的元素仍然是在其包含块所处的平面内被渲染. 3D变换会产生一个变换矩阵,该变换矩阵在Z轴上的分量不为0.结果是把元素渲染到一个不同于其包含块所处的平面内.这将影响到通常情况下的"后来居上"的渲染规则:变换元素可能会和其相

JS魔法堂:LINK元素深入详解

一.前言 我们一般使用方式为 <link type="text/css" rel="stylesheet" href="text.css"> 来引入外部层叠式样式文件,但LINK元素各属性的具体含义.资源加载行为等方面却了解不多,本文打算稍微深入一下. 由于内容较多,特设目录一坨: 二.到底有没有结束标签? 三.普通属性介绍 四.属性disabled详解 1. Attribute和Property的disabled  2. disab

浏览器加载渲染网页过程解析 (转)

浏览器的工作机制,一句话概括起来就是:web浏览器与web服务器之间通过HTTP协议进行通信的过程.所以,C/S之间握手的协议就是HTTP协议.浏览器接收完毕开始渲染之前大致过程如下: 从浏览器地址栏的请求链接开始,浏览器通过DNS解析查到域名映射的IP地址,成功之后浏览器端向此IP地址取得连接,成功连接之后,浏览器端将请 求头信息 通过HTTP协议向此IP地址所在服务器发起请求,服务器接受到请求之后等待处理,最后向浏览器端发回响应,此时在HTTP协议下,浏览器从服务器接收到 text/html

浮动元素margin负值的应用

上次写到三列布局,其中提到浮动元素margin为负值时的应用,今天就来总结一下,它的用处何在. 首先,先来探究一下,当一个元素的margin为负值时,都会有哪些影响. 其一,对自身的影响. 当元素不存在width属性或则width:auto的时候,负值margin会增加元素的宽度.(注意:这仅仅是在元素不存在width属性或则width属性默认的时候,如果有宽度设置,margin-left和margin-right为负值时,会发生位移.) <!DOCTYPE html> <html>

浏览器加载渲染网页过程解析

浏览器的工作机制,一句话概括起来就是:web浏览器与web服务器之间通过HTTP协议进行通信的过程.所以,C/S之间握手的协议就是HTTP协议.浏览器接收完毕开始渲染之前大致过程如下: 从浏览器地址栏的请求链接开始,浏览器通过DNS解析查到域名映射的IP地址,成功之后浏览器端向此IP地址取得连接,成功连接之后,浏览器端将请 求头信息 通过HTTP协议向此IP地址所在服务器发起请求,服务器接受到请求之后等待处理,最后向浏览器端发回响应,此时在HTTP协议下,浏览器从服务器接收到 text/html

浏览器加载渲染网页过程解析--备用

浏览器的工作机制,一句话概括起来就是:web浏览器与web服务器之间通过HTTP协议进行通信的过程.所以,C/S之间握手的协议就是HTTP协议.浏览器接收完毕开始渲染之前大致过程如下: 从浏览器地址栏的请求链接开始,浏览器通过DNS解析查到域名映射的IP地址,成功之后浏览器端向此IP地址取得连接,成功连接之后,浏览器端将请 求头信息 通过HTTP协议向此IP地址所在服务器发起请求,服务器接受到请求之后等待处理,最后向浏览器端发回响应,此时在HTTP协议下,浏览器从服务器接收到 text/html