news 2026/8/27 2:22:10

模态框与DOM,及React和Vue中的优化

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
模态框与DOM,及React和Vue中的优化

为避免层级、布局和事件体系导致的副作用(例如受父元素的CSS影响)

模态框通常挂在 document.body 或根节点下

直接 DOM 操作

首先我想的是

const modal = document.createElement('div') modal.className = 'modal' document.body.appendChild(modal)

然后配置 z-index 置顶、 position: fixed 覆盖全页面

但是直接原生 DOM 会导致 重排、重绘 ,性能耗散!

所以在 React 和 Vue 的框架层面做了处理,需要让模态框挂载位置正确的同时能走diff判断进行性能优化,防止重复 mount,unmount 导致的销毁与重建,还会减少 CLS 提升 SEO

React - Portal传送门

ReactDOM.createPortal( <Modal />, document.body )

在组件关系逻辑树 Fiber Tree 中,管理组件关系和生命周期等等

模态框作为一个组件即一个 Fiber 节点进行插入

App └── Page └── Modal

但是在 DOM 中模态框并不是Page的子组件,而是直接挂在 body 下面的

<body> ├── #root │ └── Page └── Modal

Portal 改变了 DOM 的插入位置

这样就实现了 模态框仍然会在 React Render 中进行 虚拟diff 进行性能优化

Vue - Teleport瞬移

直接写进了语法层

<Teleport to="body"> <Modal v-if="open" /> </Teleport>

本质和 React Portal 基本一致

  • 虚拟节点标记 teleport
  • patch 阶段插入到指定容器
  • diff 范围仅限在 Teleport 子树中

直接JS操作

那么其实我们要优化的就是避免重复的创建

所以可以通过单例模式在全局作用域下面进行 let 的内存管理,防止重复的GC回收和创建导致的重排重绘

let modalEl function getModal() { if (!modalEl) { modalEl = document.createElement('div') modalEl.className = 'modal' document.body.appendChild(modalEl) } return modalEl }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 6:40:26

鸿蒙投屏工具HOScrcpy深度实战:突破传统镜像的进阶玩法

鸿蒙投屏工具HOScrcpy深度实战&#xff1a;突破传统镜像的进阶玩法 【免费下载链接】鸿蒙远程真机工具 该工具主要提供鸿蒙系统下基于视频流的投屏功能&#xff0c;帧率基本持平真机帧率&#xff0c;达到远程真机的效果。 项目地址: https://gitcode.com/OpenHarmonyToolkits…

作者头像 李华
网站建设 2026/8/27 6:09:31

基于MATLAB的胃癌检测实现方案

基于MATLAB的胃癌检测实现方案&#xff0c;结合主动轮廓分割&#xff08;Active Contour&#xff09;与支持向量机&#xff08;SVM&#xff09;分类&#xff0c;包含图像处理、特征提取和模型训练全流程一、核心代码 1. 图像预处理与主动轮廓分割 function [segmented, feature…

作者头像 李华
网站建设 2026/8/24 10:56:32

图像分割新利器:预训练骨干网络快速构建高质量分割模型

图像分割新利器&#xff1a;预训练骨干网络快速构建高质量分割模型 【免费下载链接】segmentation_models.pytorch Segmentation models with pretrained backbones. PyTorch. 项目地址: https://gitcode.com/gh_mirrors/se/segmentation_models.pytorch 在计算机视觉领…

作者头像 李华
网站建设 2026/8/26 3:05:18

36、Linux 系统安全防护全攻略

Linux 系统安全防护全攻略 1. 物理环境安全 在保障 Linux 系统安全时,物理环境的安全是基础。 - 服务器空间访问控制 :对于服务器机房或配线柜,有不同的访问控制方法。使用带密码锁的特殊钥匙门是一种方式,但当员工离职时需更改密码,存在一定不便。而使用磁条卡是更实…

作者头像 李华
网站建设 2026/8/26 13:39:03

React Native语音识别终极指南:让你的应用听懂用户心声

React Native语音识别终极指南&#xff1a;让你的应用听懂用户心声 【免费下载链接】voice :microphone: React Native Voice Recognition library for iOS and Android (Online and Offline Support) 项目地址: https://gitcode.com/gh_mirrors/voi/voice 想象一下&…

作者头像 李华