热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

VUE中$refs的坑

临时接手一个存在问题的vue项目,页面存在一定复杂度,随便操作之后内存暴涨,经过多方测试,确定了其中一个大量使用的公共表单组件存在问题,便进行了一系列的测试之后,发现了vue里面$

临时接手一个存在问题的vue项目,页面存在一定复杂度,随便操作之后内存暴涨,经过多方测试,确定了其中一个大量使用的公共表单组件存在问题,便进行了一系列的测试之后,发现了vue里面$refs会导致其挂载的dom和包含的子组件的dom,对象实例无法销毁:
1: 设置ref属性,并未使用

componentA.vue


当路由切换之后(切换其他页面, componentA.vue组件销毁),打印浏览器堆栈内存快照,搜索detached

《VUE中$refs的坑》
不存在任何detached(游离)dom;

2: 使用了 $refs
mounted() {

console.log(this.$refs.refTest)

}
再次打印堆栈快照:

《VUE中$refs的坑》

3.搜索了相关问题之后并没有找到相关问题说明,尝试原生dom移除:

beforeDestroy(){

this.$refs.refTest.parentNode.removeChild(this.$refs.refTest)

}
继续打印堆栈快照发现除了 ref本身的dom,其内部的dom都不存在了,

《VUE中$refs的坑》

但这仅仅是简单的嵌套解构,如果不做此操作,反复切换路由(反复加载组件),detached的dom会越来越多,当我加入了实际业务代码之后发现主动删除dom节点并不能完全删除干净,有其他原因导致,经过多方测试最终并未得到有力数据结论.

ps: 建议大家尽可能减少$refs的使用,尤其是复杂的页面,高频使用场景,特别是使用UI组件的表单验证,慎用,至于相关说明官方文档并木有做出明确说明,issure相关也没有人回答,欢迎有见解的伙伴来交流


推荐阅读
  • 深入理解Vue.js:从入门到精通
    本文详细介绍了Vue.js的基础知识、安装方法、核心概念及实战案例,帮助开发者全面掌握这一流行的前端框架。 ... [详细]
  • 择要:Fundebug的JavaScript毛病监控插件同步支撑Vue.js异步毛病监控。Vue.js从降生至今已5年,尤大在本年2月份宣布了严重更新,即Vue2.6。更新包含新增 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • 本文介绍了多个关于JavaScript的书籍资源、实用工具和编程实例,涵盖从入门到进阶的各个阶段,帮助读者全面提升JavaScript编程能力。 ... [详细]
  • 本文总结了优化代码可读性的核心原则与技巧,通过合理的变量命名、函数和对象的结构化组织,以及遵循一致性等方法,帮助开发者编写更易读、维护性更高的代码。 ... [详细]
  • 本文介绍如何使用 NeDB 对嵌套结构的数据进行模糊搜索,特别是针对包含嵌套数组的对象。通过示例代码和详细解释,帮助开发者正确实现这一功能。 ... [详细]
  • [Vue.js 3.0] Guide – Scaling Up – State Management
    [Vue.js 3.0] Guide – Scaling Up – State Management ... [详细]
  • 本文探讨了2019年前端技术的发展趋势,包括工具化、配置化和泛前端化等方面,并提供了详细的学习路线和职业规划建议。 ... [详细]
  • 理解文档对象模型(DOM)
    本文介绍了文档对象模型(DOM)的基本概念,包括其作为HTML文档的节点树结构,以及如何通过JavaScript操作DOM来实现网页的动态交互。 ... [详细]
  • 案例1:在子组件中两个按钮1和-1,点击后修改count整个操作的过程还是在子组件中完成,但是之后的展示交给父组件这样,我 ... [详细]
  • 本文详细介绍了如何使用JavaScript实现数据的双向绑定,包括MVVM架构的基本概念、不同框架下的实现方式以及具体的代码示例。 ... [详细]
  • 本文详细介绍Vue.js的安装步骤及其基本使用方法。Vue.js是一个流行的前端框架,由尤雨溪创立,适用于快速构建用户界面。 ... [详细]
  • 高效的JavaScript异步资源加载解决方案
    本文探讨了如何通过异步加载技术处理网页中大型第三方插件的加载问题,避免将大文件打包进主JS文件中导致的加载时间过长,介绍了实现异步加载的具体方法及其优化。 ... [详细]
  • 作为一名专业的Web前端工程师,掌握HTML和CSS的命名规范是至关重要的。良好的命名习惯不仅有助于提高代码的可读性和维护性,还能促进团队协作。本文将详细介绍Web前端开发中常用的HTML和CSS命名规范,并提供实用的建议。 ... [详细]
  • 本文探讨如何在VueJS项目中通过配置vue.config.js文件实现多页面应用(MPA),特别是针对管理端和客户端的不同需求。 ... [详细]
author-avatar
ccM保佑加琳诺爱儿1984f
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有