React虚拟dom

虚拟DOM是JavaScript对象,用于描述真实DOM,简化状态跟踪和性能优化。在React中,通过render生成虚拟DOM并用diff算法更新实际DOM,以提升复杂场景的渲染性能。但并非所有情况下虚拟DOM都是最优选择,简单渲染场景下直接操作真实DOM可能更快。
摘要由CSDN通过智能技术生成

虚拟DOM(Virtual DOM)

什么是虚拟DOM

一句话总结虚拟DOM就是一个用来描述真实DOM的javaScript对象,这样说可能不够形象,下面分别用代码来描述真实DOM以及虚拟DOM。

真实dom:

<ul class="list">
    <li>a</li>
    <li>b</li>
    <li>c</li>
</ul>

对应的虚拟DOM:


let vnode = h('ul.list', [
  h('li','a'),
  h('li','b'),
  h('li','c'),
])

console.log(vnode)

控制台打印出来的Vnode:

在这里插入图片描述
在使用react开发项目的时候就是通过render函数生成虚拟dom并渲染出来。下面是实际开发的代码:

import React, { useEffect, useState } from 'react';
import { Card, Tag } from 'antd';

const HomePage = () => {
  const [count, setCount] = useState(0);

  useEffect(() => {
    const Timer = setInterval(() => {
      setCount(prev => prev + 1);
    }, 1000);

    return () => clearInterval(Timer);
  }, []);

  return (
    <Card title="HomePage">
      mounted start <Tag color="cyan">count:{count}</Tag> unmounted clear
    </Card>
  );
};
export default HomePage;

为什么要使用虚拟dom呢?

  • MVVM框架解决视图和状态同步问题
  • 模板引擎可以简化视图操作,没办法跟踪状态,虚拟DOM跟踪状态变化
  • 通过比较前后两次状态差异更新真实DOM,优化前端渲染性能

使用虚拟dom性能一定是最优的吗?

答案是不一定,因为在某些渲染场景不复杂的情况下,渲染真实dom只需要生成一个简单的dom替换掉以前的视图就可以,使用虚拟dom多了生成虚拟dom并使用diff算法对比,这种情况下直接渲染真实dom是更优的选择,但是现在的前端应用绝大多数都包含复杂场景,所以都用虚拟dom来提升前端的渲染性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值