位置:- 正文

Vue 组件强制刷新方式(vue组件强制刷新)

编辑:rootadmin
Vue 组件强制刷新方式

推荐整理分享Vue 组件强制刷新方式(vue组件强制刷新),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue3 强制刷新,vue强刷新,vue强制刷新数组,vue强刷新,vue强刷新,vue 强制刷新dom,vue强制刷新数组,vue组件强制刷新,内容如对您有帮助,希望把文章链接给更多的朋友!

🏆 文章目标:记录前端开发中遇见的问题。 🍀 Vue 组件强制刷新方式 ✅ 创作者:Jay… 🎉 个人主页:Jay的个人主页 🍁 展望:若本篇讲解内容帮助到您,请帮忙点个赞吧,您的支持是我继续写作的最大动力,谢谢。🙏

需求

为实现动态页签组件,根据页签的类型获取对应的component。如视图类型的页签,只用于数据显示,不做任何增删查改;**多对多类型 **的页签,将实现对象与对象之间的绑定。每个component有不同的业务逻辑,自然组件封装的方式也不一样。

问题

可能某一个对象存在多个相同类型的页签,这样相同类型页签之间进行来回点击时,页签内的数据没有发生改变。

分析Vue 组件强制刷新方式(vue组件强制刷新)

组件地址相同时,来回点击存在缓存,页签相关的数据不会进行刷新。

源码简单介绍

activeComponent通过 计算属性 根据 页签名称 动态获取对应的组件地址。

activeTabData 通过 计算属性 根据 页签名称 动态获取当前页签对应详细参数,如 tab-object-id 、tab-id等

<template v-if="tabsList.length && tabName"> <component :is="activeComponent" :id="id" :ref="activeComponent" :instance-id="id" :tab-type="activeTabData.type" :tab-object-id="activeTabData.tabObjectId" :tab-id="activeTabData.id" :tab-unicode="activeTabData.unicode" :tab-data="activeTabData" ></component> </template>解决

通过改变一个变量来实现组件的强制刷新。但要注意的是,只要当key的值改变,组件就会自动刷新,所以key的值可以是任何类型,只要唯一即可。

<template v-if="tabsList.length && tabName"> <component :is="activeComponent" :key="activeTabData.unicode" :id="id" :ref="activeComponent" :instance-id="id" :tab-type="activeTabData.type" :tab-object-id="activeTabData.tabObjectId" :tab-id="activeTabData.id" :tab-unicode="activeTabData.unicode" :tab-data="activeTabData" ></component> </template>其他解决方法this.$forceUpdate()

子组件的强制刷新方法。当需要对当前组件进行强制刷新操作,可以调用this.$forceUpdate()强制刷新当前组件。

v-if

通过v-if ,或者自定义函数来控制组件的显示/隐藏。但不满足当前需求,在点击其他页签时,所有页签都需要保持显示。

v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。v-show 不适合作为强制刷新组件的方式使用,因为v-show 只是控制dom的显示或隐藏。

本文链接地址:https://www.jiuchutong.com/zhishi/297755.html 转载请保留说明!
下一篇链接:https://www.jiuchutong.com/zhishi/297756.html
免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络