Vue 组件强制刷新方式

这篇具有很好参考价值的文章主要介绍了Vue 组件强制刷新方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

需求

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

问题

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

分析

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

源码简单介绍

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

activeTabData 通过 计算属性 根据 页签名称 动态获取当前页签对应详细参数,如 tab-object-idtab-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.toymoban.com/news/detail-421522.html

到了这里,关于Vue 组件强制刷新方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue强制刷新页面重新加载数据方法

    业务场景 在管理后台执行完增删改查的操作之后,需要重新加载页面刷新数据以便页面数据的更新 实现原理 就是通过控制router-view 的显示与隐藏,来重渲染路由区域,重而达到页面刷新的效果,show - flase - show 具体代码 1.首先在我们的根组件APP.vue里面,写入刷新方法,路由初

    2024年02月11日
    浏览(33)
  • 【vue】element强制刷新el-carousel的dom:

    一、问题: 二、分析: el-carouse里面的数据是最新的,但dom却是前一个的数据 注意:使用了 this.$forceUpdate(); 或 this.$set(xx,xx); ,没有效果 三、解决:

    2024年02月07日
    浏览(75)
  • 高德+vue Object3DLayer强制刷新后找不到的问题

    报错错误展示: 解决方式一: 1.重构plugin 2.判断如果plugin为空,再次刷新地图 示例完整代码 ps:在最新一次项目中,需要在掩模上再添加一些3D板块,这个时候发现使用解决方法一还是不行,出现报错“Maximum call stack size exceeded”,查询得知这是因为异步获取数据所致,并且报

    2024年02月13日
    浏览(32)
  • ✝️ 强制 Vue 重新渲染组件的正确方法

    有时 Vue 的 reactivity 不符合需求,你需要重新渲染一个组件,或者可能只是想remove当前的 DOM 并 re-render。那么如何让 Vue 以 正确的方式重新加载组件呢? 强制 Vue 重新渲染组件的最佳方法是在组件上设置一个 :key 。当需要重新渲染组件时,只需更改键的值,Vue 就会重新渲染组

    2024年02月07日
    浏览(38)
  • Vue中强制更新数据的两种方式

    有时候我们发现修改了数据源后视图并没有更新,这里提供两种解决方案 Vue中强制更新数据的方法有两种。 方法一: 使用forceUpdate强制渲染,更新视图和数据。 注:全局强制刷新,性能消耗高。 方法二: this.$set()方法是Vue自带的可对数组和对象进行赋值,并触发监听的方法

    2024年02月11日
    浏览(44)
  • 【Vue】组件的刷新

    刷新整个页面, 通过刷新整个页面达到组件的刷新,例如router上的go方法: this.router.go(0) ,或者 location.reload() ,缺点页面会出现空白。刷新页面会触发组件的 beforeCreate 、 create 、 beforeMount 、 mounted 、 beforeDestory 、 destoryed 方法。不推荐。 使用 v-if 刷新组件, v-if :在切换时

    2024年02月11日
    浏览(54)
  • Vue子组件关闭后调用刷新父组件方法

    实现效果   调用方法 当在子组件里更改了某些信息且关闭子组件后,需要父组件更新修改后的内容,操作如下: 1、$emit触发 2、使用$parent触发父组件 更新数据是由某个方法触发,如getList() 常见问题 在开发 Vue 项目中,遇到了一个这样的问题: 其中UI框架使用的是iview UI , 在

    2024年02月11日
    浏览(26)
  • vue 刷新当前页面的方式

    目录 一、问题 二、手动刷新当前页面 1.方法一:v-if  router-view 2.方法二:更改 router-view的 key值 三、总结    有时候需要手动刷新整个页面。比如一个页面右侧有一个患者切换的菜单,切换完患者后,要重新调用接口,才能让当前的页面中的数据与患者对应。     对于这种

    2024年02月15日
    浏览(44)
  • vue返回上一页自动刷新方式

    再vue中,返回上一页时:如果页面是打开的状态,页面不会自动刷新,会保持着上次跳转的状态不更新; 原因:vue-router的切换不同于传统的页面切换,而是路由之间的切换,其实就是组件之间的切换,引用相同组件的时候, 会直接调用缓存而不会调用created(),mounted()函数

    2024年02月06日
    浏览(33)
  • 项目开发之vue中如何刷新子组件,重置组件,重新加载子组件

    在父组件循环数据列表中,列表中有事件点击打开某个子组件; 父组件中要更新子组件的值 在父组件循环数据列表中,点击打开某个子组件,A数据打开子组件后,B数据再打开子组件,此时子组件中会有缓存A数据。 子组件没有刷新,还是停留在上一个数据缓存 给组件添加

    2024年02月12日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包