我的编程空间,编程开发者的网络收藏夹
学习永远不晚

vue3销毁组件方法及问题解决方案

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

vue3销毁组件方法及问题解决方案

问题描述:使用elementplus的dialog,当关闭弹窗后不刷新页面,直接再次打开发现弹窗中还存留上一次的数据。尝试定义关闭事件,或者使用api中提供的属性destroy-on-close 都不行。后来发现这是一个误区。弹窗关闭时并不代表这个组件已经被销毁了,只是dialog关闭了
解决方法:使用v-if 控制页面的创建与销毁。
由于我这里dailog中的数据比较多,所以我抽成了一个组件,在父组件中引用了,但是关闭弹窗的操作是在子组件的dialog中,所以这里又涉及到了子父组件的传值。再来复习一遍~。
ps:我这里的业务场景是通过在父页面点击按钮来控制子页面是否弹出来,所以具体实现是这样的:
在父页面中定义一个变量,默认为false,当点击弹出按钮时,将这个变量置为true;子页面中手动触发关闭dialog的事件中,将该变量设置为false,并将值传递待到这个父页面。
结构:
子组件

父组件:

接下来具体实现:
子组件:当子组件的dialog手动关闭时

关闭方法:
使用defineEmits,定义一个方法,并用一个变量去接收,在关闭事件中传递一个值,为false

const colse = defineEmits(["ok"])
function closeNDialog() {
  colse("ok", false)
}

父页面:在父页面引用的子组件中使用v-if绑定是否销毁标识,并定义方法去接收子组件传递过来的布尔值。在父页面通过点击button打开子组件的事件中将该值设置为true,此时子页面为以创建

<!-- 子组件,使用v-if接收,定义ok方法接收子传递过来的布尔值,
       需要注意。ok应和子页面中定义的保持一致,这个e就代表的是子页面colse方法传递过来的值,
       该值为false,然后我们将false赋值给是否销毁标识
 -->
    <aaa v-if=isExist @ok="e=>isExist=e"></aaa>
	//定义是否销毁标识,默认为false,代表销毁
	const isExist = ref(false);

父页面通过点击button打开子组件的事件

const showManage = (row) => {
  openDialog({}).then(resp => {
    isExist.value = true
    // 具体业务逻辑.....
  })
}

至此就完成了通过v-if 和子父组件传值的方法来销毁子页面的需求,实现了打开子页面请求数据后,再不刷新地址栏的情况下,再次打开子页面弹窗时,上一次请求的数据被清空,相当于重新创建了一个子页面。但是并不建议这样做,因为重复创建dom元素。我这里由于子页面中数据有很多,并且子页面中还嵌套了子页面,要想实现清空数据,目前我想到的解决方法就是创建,销毁子页面。欢迎其他大佬指正更好的实现方式。

到此这篇关于vue3 销毁组件方法的文章就介绍到这了,更多相关vue3 销毁组件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

vue3销毁组件方法及问题解决方案

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue3销毁组件方法及问题解决方案

这篇文章主要介绍了vue3销毁组件方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-05-17

vue子组件created方法不执行问题及解决

这篇文章主要介绍了vue子组件created方法不执行问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

详解Vue3的包发布测试报错问题及解决方案

Vue全家桶一直是前端开发的重要技术栈之一,而近期Vue3版本正式发布,其中对比Vue2将会更加高效、快速、灵活,引起了广大开发者的关注。不过,当我们测试Vue3的包发布时,有时可能会遇到一些报错问题,下面将详细介绍一下Vue3的包发布测试报错问题及解决方案。## 一、报错信息1. 当我们在运行`npm run build`时,可能会出现如下报错信息:```ERROR in /
2023-05-14

vue3中echarts的tooltip组件不显示问题及解决

这篇文章主要介绍了vue3中echarts的tooltip组件不显示问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-11-13

Go语言的问题及解决方案

近年来,随着科技的快速发展,Go语言作为一种高效、简洁的编程语言备受关注。然而,就像任何一种编程语言一样,Go语言也存在着一些不容忽视的缺陷。本文将探讨Go语言存在的一些缺陷,并提供解决之道,同时附带具体代码示例。错误处理机制不够灵活Go
Go语言的问题及解决方案
2024-02-24

ajax跨域问题以及解决方案

这期内容当中小编将会给大家带来有关ajax跨域问题以及解决方案,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。复现Ajax跨域问题做两个简单的小项目复现Ajax跨域问题. 后端语言使用Java首先是一个简单
2023-06-08

vue3原始值响应方案及响应丢失问题怎么解决

一、ref的引入ref就是解决proxy无法直接代理原始值的问题。我们先来看ref的使用:constname=ref(&#39;小黑子&#39;)ref是怎么实现的呢?其实就是用对象“包裹”原始值。我们再来看一下ref的实现:functionref(val){//使用对象包裹原始值constwrapper={value:val}//利用reactive将对象变成响应式数据returnreactive(wrapper)}ref的实现就是这么简单。ref对原始值响应主要就做了这两件事
2023-05-14

Golang中数组的常见问题及解决方法

Golang中数组的常见问题及解决方法在Golang编程中,数组是一种常见的数据结构,但与其他语言不同的是,Golang中的数组是固定长度的。在实际开发中,我们经常会遇到一些关于数组的问题,本文将介绍一些常见的问题,并提供相应的解决方法和
Golang中数组的常见问题及解决方法
2024-03-03

记VUE3+TS获取组件类型的方法踩坑及解决

这篇文章主要介绍了VUE3+TS获取组件类型的方法踩坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-03-06

springboot启动404问题以及解决方案

SpringBoot启动404问题是指访问非首页URL时出现404错误,原因包括:SpringSecurity配置错误缺少控制器路径映射错误视图模板不存在静态资源配置错误缺失父级依赖EmbeddedServletContainerCustomizer配置错误缺少DispatcherServlet特殊字符编码服务器端口错误服务器环境针对这些原因,本文提供了相应的解决方案,例如检查配置、添加控制器、更正路径映射、创建视图模板等。此外,还建议调试应用程序和检查日志文件以查找其他线索。
springboot启动404问题以及解决方案
2024-04-02

ResponseBodyAdvice常见问题及解决方法

这篇文章主要讲解了“ResponseBodyAdvice常见问题及解决方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ResponseBodyAdvice常见问题及解决方法”吧!场景通过R
2023-06-20

Android应用中使用Fragment组件的一些问题及解决方案总结

Fragment的主要意义就是提供与Activity绑定的生命周期回调。 Fragment不一定要向Activity的视图层级中添加View. 当某个模块需要获得Activity的生命周期回调的时候,就可以考虑通过Fragment来实现.
2022-06-06

编程热搜

目录