React (二) 虚拟Dom介绍和非Dom的属性介绍

React-为什么要使用虚拟DOM 什么是虚拟DOM(Virtual DOM)首先,解释下虚拟DOM。虚拟DOM保存了真实DOM的层次关系和一些基本属性,与真实DOM一一对应。虚拟DOM的工作原理是:数据 -> 全新的虚拟DOM -> 与上一个状态的虚拟DOM进行diff算法比较,得到一个Patch -> 把这个Patch打到浏览器的DOM上。所以虚拟DOM叫的挺高端,其实就有点类似DocumentFragment,把多次DOM操作做 阅读详情

虚拟Dom介绍和非Dom的属性介绍

什么是虚拟 Dom(virtual Dom)

虚拟 Dom 不是真实的 Dom。


class App extends React.Component {
    render() {
        return(
            <div className="App">
                <h1>Hello world1</h1>
            </div>
        );
    }
}

上面是一个类组件,render 执行的结果不是一个真实 Dom,而是一个轻量级的 javascript 的对象。它最终会把 jsx 编译成 js 对象描述的形式如:

{
    type: "div", // 标签
    props: [[]] // 属性
}

这种就会称之为虚拟 Dom。React 对虚拟 Dom 做了一些优化,可以进行批处理,底层进行了 diff 算法这些操作。

操作 dom 的成本很高,每次修改 Dom 浏览器都要进行重绘或者重排,使用了虚拟 Dom,可以避免这些问题。

尽可能少的操作dom, 提高渲染效率

会对比dom哪里进行改变了,去单独修改修改了的部分,而不是真的你整个页面的重绘或者重排。

非 Dom 属性以及如何使用

dangerouslySetInnerHTML

dangerouslySetInnerHTML == 原生中 innerHTML

使用 dangerouslySetInnerHTML 要遵循规则

{
    __html:'<p>我是插入的html</p>'
}

function App() {
    const divTitles = "我是react111";
    return (
        <div title={divTitles} className="App" tab-index="1">
            <h1>Hello world</h1>
            <div dangerouslySetInnerHTML={{__html:"<p>我是插入的html</p>"}}></div>
        </div>
    );
}

在网页中插入html,是很容易被xss攻击,在对插入的代码可以做一些转义的处理。

ref

ref == 原生中的id

可以访问到原生或者组件的实例

访问真实Dom

不能在函数组件上使用,可以在类组件上使用,

// 报错
function App() {
    const divTitles = "我是react111";
    const userRef = React.createRef();
    return (
        <div title={divTitles} className="App" tab-index="1">
            <h1 ref={userRef}>Hello world</h1>
        </div>
    );
}

// 不报错
class Footer extends React.Component {
    render() {
        const userRef = React.createRef();
        return(
            <div ref={userRef}>
                <h1>我是一个类组件</h1>
            </div>
        );
    }
}

ref 不能在函数组件上使用,但是可以在函数组件内部使用


function Component1(){
    // 创建一个ref
    const inputRef = React.createRef();
    function handClick() {
        inputRef.current.focus();
    };
    return (
        <div className="App" tab-index="1">
            <h1> Component1</h1>
            <button onClick={handClick}>我是按钮</button>
            <input type="text" ref={inputRef}></input>
        </div>
    );
}

上面代码在点击事件之后,可以聚焦到 input 中

key

提高渲染性能,作用是唯一标准。帮助 React 识别那个元素改变了。如果不加 key 在比较 Dom 元素的时候比较范围会比较大,加了 key 值会缩小比较范围,甚至是直接定位到当前 Dom。

React怎么创建虚拟dom和挂载到页面 1、🍟你可以直接下载本节配套的资源代码,然后导入vscode看效果,也可以跟着教程一点一点敲,都是没问题的。2、🤔怎么运行本节代码?很简单,随便找个浏览器打开index.html即可。💕。 阅读详情

相关推荐

RealDOM一个1K非虚拟DOM非框架骨架用于简单应用程序

Real-DOM: 一个〜1K非虚拟DOM非框架骨架用于简单应用程序

react中支持html标签,虚拟DOM的使用

一、react中支持html标签,使用属性dangerouslySetInnerHTML。 用法如下: let htmlspan="<span style='color:red'>支持HTML标签</span>" <span dangerouslySetInnerHTML={{__html:htmlspan}}>&...

往事随风 982

计数译码驱动显示电路实验报告_京东方G0A电路、阵列基板、显示 装置及驱动方法广州威彩...

图1、实施例二所述的选择子单元的结构示意图图2、实施例四所述的GOA电路结构示意图图3、实施例七所述的阵列基板的局部结构示意图图4、实施例所述的极性反转驱动方法的第一场的各信号时序图图5、实施例所述的极性反转驱动方法的第二场的各信号时序图图6、实施例所述的极性反转驱动方法的第三场的各信号时序图图7、实施例所述的极性反转驱动方法的第四场的各信号时序图图8、为图4所示时序下,实施例八所述显示...

weixin_35696112的博客 925

React中的Virtual DOM(看这一篇就够了)

虚拟 DOM 的基本思想是将整个 DOM 结构抽象成一个 JavaScript 对象树,通过对这个对象树的操作来更新实际的 DOM。当组件的状态或属性发生变化时,React 会生成一个新的虚拟 DOM 树,并通过比较新旧虚拟 DOM 树的差异,找出需要更新的部分。然后,React 会将这些差异转化为最小的 DOM 操作,只更新实际 DOM 中需要变化的部分,从而提高页面渲染的性能。

努力的鋜 648

CCC数字钥匙Release 3实战:如何用BLE/UWB实现无钥匙进入(附避坑指南)

本文深入解析CCC数字钥匙Release 3标准下BLE/UWB无钥匙进入系统的开发实践,涵盖硬件选型、安全测距协议、时序同步等关键环节,并提供实战调试技巧与安全攻防案例。特别针对BLE芯片配置、UWB模块选型等常见陷阱给出解决方案,帮助开发者高效实现厘米级精度的数字钥匙系统。

weixin_29326909的博客 255

基于YOLO的智能视频监控异常行为检测研究:从算法原理到落地部署的全栈实践

本文深入探讨如何利用 YOLO(You Only Look Once)系列算法构建一套端到端的异常行为检测系统。文章首先回顾 YOLOv8 在时空建模上的局限,然后提出“YOLO-STA(Spatio-Temporal Aggregation)”轻量级改进框架,在公开数据集 UCF-Crime 上将异常行为检测的 mAP@0.5 从 72.4 提升到 80.1;接着给出完整训练、推理、部署的 Python 代码(PyTorch + TensorRT),并介绍如何仅用 4 GB 显存的 Jetson Xavi

博客 1330

react中的DOM元素属性

一些关于React中的DOM元素属性:如何优雅、正确地在React中访问修改元素的属性;在react中如何自定义元素的属性。 HTMLDivElement、HTMLImageElement、data-name、data-xxx、getAttribute、classList、"HTMLElement 上面不存在属性classList"

hello_helloworld的博客 570

基于深度学习的ECG心电信号异常分类:从数据集到Transformer实战

心电图(Electrocardiogram, ECG)是诊断心血管疾病最常用、最无创的工具。随着可穿戴设备的普及,海量的心电数据需要自动、快速且准确地分析。人工智能,尤其是深度学习,在心电信号分类任务中表现出了超越传统规则算法的能力。本文将深入探讨ECG异常分类的技术细节,从心电数据的生理基础,到数据预处理,再到使用1D-CNN、LSTM、以及前沿的Transformer模型进行实战演练。文章末尾提供了完整的代码以及多个国际公开数据集的获取方式。

YOLO 191

jsliang 求职系列 - 37 - React - 虚拟 DOM

一 目录 不折腾的前端,和咸鱼有什么区别目录一 目录二 前言三 虚拟 DOM 3.1 要点 1:浏览器渲染过程 3.2 要点 2:DOM 操作昂贵 3.3 要点 3:Diff 算法四 虚...

weixin_41806099的博客 268

JavaSwing_4.2: JDialog、JOptionPane(对话框)

JDialog,对话框。使用 JDialog 类可以创建自定义有的对话框,或者调用 JOptionPane 中的多个静态方法快速创建各种标准的对话框。JOptionPane是 JavaSwing 内部已实现好的,以静态方法的形式提供调用,能够快速方便的弹出要求用户提供值或向其发出通知的标准对话框。

谢TS的博客 7万+

Spring AI 实战(11):收官!10 道面试高频题 + 一张脑图带走全系列

本文是Spring AI系列的收官篇,通过知识脑图梳理前10篇内容,提供面试高频题和避坑清单。主要内容包括: 知识脑图:分6层(核心抽象、输入增强、输出控制等)总结Spring AI全栈技术。 10道高频面试题:涵盖ChatClient/ChatModel关系、结构化输出、RAG链路等核心知识点。 避坑清单:列出9条常见问题及解决方案,如向量维度匹配、Advisor顺序等。 技术对比:分析Spring AI、LangChain4j和Spring AI Alibaba的差异与适用场景。 使用建议:提供面试复习

不才不才不不才的博客 296

无虚拟 DOM 框架

最近 Vue 在美国举办了 Vue Conf 2022,因为尤雨溪在 Vue Conf 上说他们正在探索一种新的编译策略,就是无虚拟DOM模式!不知大家发现没有,自从2021年以来,无虚拟DOM框架/库/编译器获得了极大的关注,最为典型的两个项目:Svelte 和 SolidJS。Svelte 是一种全新的构建用户界面的方法。传统框架如 React 和 Vue 在浏览器中...

文摘资讯 1012

AI穿透式智慧粮仓

本报告基于 2025-2026 年全国多地智慧粮储实践案例,系统分析了 "AI + 穿透式" 智慧粮储体系的技术架构、AI 算法应用、提质增效成效、区域差异化特点及未来发展趋势。该体系通过多模态感知、智能算法与管控平台的深度融合,实现粮食存储全流程精准感知、智能预警与科学调控,显著降低储粮损耗与运营成本,大幅提升储粮安全水平与管理效率。报告梳理了各地差异化实践路径,提出针对性发展建议,为推动我国粮食仓储高质量发展、筑牢国家粮食安全防线提供参考。

reset2021的博客 229

浅谈React的虚拟DOM

React的虚拟DOM是其高效渲染和更新的关键。通过使用虚拟DOM,React可以在不直接操作真实DOM的情况下,快速地计算出UI的变化,并只更新必要的部分。虚拟DOM的优点包括高效的更新、跨平台支持、易于维护和调试以及更好的用户体验。了解虚拟DOM的工作原理、优点和使用技巧,可以帮助你更好地利用React来构建高效的Web应用。

Front end development engineer 2万+

基于PINN求解裂纹扩展问题的优化开发

本文提出了一种基于物理信息神经网络(PINN)的裂纹扩展问题求解方法。通过将线弹性断裂力学控制方程和裂纹尖端场特性嵌入神经网络损失函数,PINN有效克服了传统有限元法在处理裂纹扩展时面临的网格重构困难、计算成本高等问题。文章详细介绍了PINN网络架构设计、裂纹尖端奇异场处理、损失函数构造以及优化策略等关键技术。数值实验表明,该方法能准确预测裂纹扩展路径和应力强度因子,且在处理复杂几何和动态扩展问题时展现出显著优势。相比传统方法,PINN具有无网格、并行计算友好等特点,为断裂力学问题提供了新的求解范式。

huanghm88的专栏 154

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Vue 和 React 中的虚拟 DOM

虚拟 DOM是 Vue 和 React 都采用的核心技术,它帮助框架优化 DOM 操作,提升性能。React使用虚拟 DOM 来描述 UI,借助 JSX 和创建虚拟节点,并通过 diff 算法更新真实 DOM。Vue则结合了响应式数据和虚拟 DOM,通过模板编译生成渲染函数,渲染函数返回虚拟节点并通过虚拟 DOM 比较进行最小化更新。尽管实现方式有所不同,二者都借助虚拟 DOM 的优势来优化页面渲染和更新,从而提供更高效的用户界面。

weixin_44100002的博客 1621

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

React系列之虚拟DOM、FIBER和DIFF算法

不建议用index作为key,比如在用index作key的情况下,当我们对原始的数据list进行了某些元素的顺序改变操作,导致了新旧集合中在进行diff比较时,相同index所对应的新旧的节点其文本不一致了,就会出现一些节点需要更新渲染文本,而如果用了其他稳定的唯一标识符作为key,则只会发生位置顺序变化,无需更新渲染文本,提升了性能。react diff算法通过新旧节点比较后,如果发现了key值相同的新旧节点,就会执行移动操作,而不会执行原策略的删除旧节点,创建新节点的操作。

cherry__yu的博客 1989

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

从虚拟dom知识无痛深入vue与react的原理

我们都知道像vue、react都有用到虚拟dom,那么虚拟dom到底是什么?框架为什么不直接操作真实dom而要在中间要引入虚拟dom呢?vue和react的虚拟dom又有什么异同呢?我们就从虚拟dom开始讲起,再来逐步引入讲解vue与react的部分原理及其异同,这里会顺便讲解到数据驱动视图及视图驱动数据,顺便明白MVVM、MVC这两种模式,顺便引入相关的八股文知识点,不小心一下子就明白了一大堆知识。

didadidadidadida的博客 1947

React虚拟DOM的进化之路

摘要 本文深入探讨React虚拟DOM技术的演进历程,从早期优化DOM操作到Fiber架构重构,再到并发渲染的实现。文章首先分析直接操作真实DOM的性能瓶颈(重排/重绘),以及React 15时期虚拟DOM通过Diffing算法和批量操作带来的优化效果。随后重点解析React 16引入的Fiber架构,它通过将渲染任务拆分为可中断的工作单元,解决了同步阻塞问题。最后展望React 18+的并发特性(如自动批处理、Transition),揭示虚拟DOM如何通过优先级调度实现更流畅的用户体验。

技术分享 1558

React虚拟DOM转换为真实DOM

在上一篇博客React虚拟DOM原理中,我们探索了如何创建虚拟DOM,那么创建了虚拟DOM之后,又是怎么转换成真实DOM,渲染在页面中的呢,下面我们继续探索。 ...

qq_38206576的博客 2496

理解React的虚拟DOM

一、背景 React是一个用于构建用户界面的JavaScript库,区别于老的前端开发技术,其最核心的就是引入了虚拟DOM的技术。为了对React有一个比较全面和深入的了解,所以把最近学习React虚拟DOM的知识,做个笔记,仅供学习。 二、什么是虚拟DOM 那什么是虚拟DOM呢?官方解析是,Virtual DOM是一种编程概念。通俗点理解,虚拟DOM是一棵虚拟的JavaScript对象树,画重点,”虚拟的“、”JS对象“,指的是它把真实的网页文档节点,虚拟成一个个的j...

luoshaoyun的博客 3151

React 虚拟DOM

虚拟DOM 什么是DOM DOM是用一颗逻辑树来表示一个文档,树的每个分支的终点都是一个节点,可以用特定的方式(编写JS、CSS、HTML)来改变这个树的结构,从而改变文档结构、样式或内容。 什么是虚拟DOM 虚拟DOM就是一个JS对象,通过对象的方式来表示DOM结构,通过事务处理机制,将多次DOM修改的结果一次性更新到页面上,从而有效的减少页面渲染次数,减少修改DOM重绘重排的时间,提高渲染性能。 React在内存中维护一个跟真实DOM一样的虚拟DOM树,再改动完组件后,会再生成一个新的虚拟DOM,Rea

qq_43539854的博客 5064

React虚拟DOM原理

1.什么是虚拟DOM 我们在前端面试的时候,经常会被问到什么是虚拟DOM。这个概念,感觉很熟悉,但又说不出它到底是什么。现在我们来探索一下到底什么是虚拟DOM。 首先我们看下什么是DOM,对于DOM,我们应该都很熟悉了,下面是MDN对于DOM的定义 文档对象模型 (DOM) 将 web 页面与到脚本或编程语言连接起来。通常是指 JavaScript,但将 HTML、SVG 或 XML 文档建模...

qq_38206576的博客 1782

React的虚拟DOM与diff算法的理解

什么是虚拟DOM

书山有路勤为径,学海无涯苦作舟 5562

React进阶-虚拟 DOM 和 Diff 算法

1.虚拟 DOM 虚拟 DOM(Virtual DOM),就是一个 JS 对象,用来描述我们希望在页面中看到的 HTML 结构内容. 为什么使用虚拟 DOM? 真实 DOM 对象属性多,处理起来繁琐、效率低。更重要的原因:React 要做跨平台开发,而不是被束缚在浏览器端。 原生 DOM 对象: 也是一个 JS 对象,是浏览器默认提供的 DOM 对象 和 HTML 元素之间是一一对应的关系 const element = { type: 'h1', props: { clas.

m0_62118859的博客 1795

web前端高级React - React从入门到进阶之JSX虚拟DOM渲染为真实DOM的原理和步骤

JSX虚拟DOM渲染为真实DOM的原理和步骤 分析与思考 前面我们已经学习了JSX的一些基本语法,通过前面的学习我们知道:在js文件中通过调用ReactDOM.render()方法,并传入一堆JSX代码(可以理解为虚拟DOM)。当程序运行时这些JSX代码就会被转换为真实的DOM元素然后呈现在页面上;那么这些JSX虚拟DOM是如何被转换为真实DOM的呢,原理又是怎样的呢? 当我们用react脚手架创建好一个项目后,会生成一个package.json文件,在这个文件的最下面有这样一段代码 "babel

lixiaosenlin的专栏 6077
上一篇: ES6基本的语法(十四) Promise 补充
下一篇: React (三) 修改props,React父传子、子传父、this绑定
SteveTang957
博客等级 码龄9年 15粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值