vue强制刷新组件的三种方法

 更新时间:2024年04月12日 09:38:55   作者:她说她一如既往的爱我  
在Vue中,强制刷新组件通常涉及到以下几种方法,本文给大家列出了常见的三种vue强制刷新组件的方法,感兴趣的朋友跟随小编一起看看吧

通过组件的key值来刷新

(当某个组件的key变化后,组件都会被重新渲染一遍)

<template>
	<el-table
	        :data="data"
	        :key="refresh"
	      >
	      ...
	</el-table>
</template>
<script lang="ts">
import { Component, Vue, Watch } from 'vue-property-decorator'
@Component({})
export default class extends Vue {
	refresh= true
	@Watch('data')
	watchData() {
	  this.refresh= !this.refresh
	}
}
</script>

还有通过if来刷新

(当v-if的值发生变化时,组件都会被重新渲染一遍)

<template>
	<el-table
	        v-if="refresh"
	        :data="data"
	      >
	      ...
	</el-table>
</template>
<script lang="ts">
import { Component, Vue, Watch } from 'vue-property-decorator'
@Component({})
export default class extends Vue {
	refresh = true
	// 监视data是否发生变化
	@Watch('data')
	watchData() {
		// 移除组件
        this.refresh = false
        // this.$nextTick可实现在DOM 状态更新后,执行传入的方法。
        this.$nextTick(() => {
        	// 重新渲染组件
            this.refresh = true
        })
	}
}
</script>

通过this $forceUpdate强制重新渲染

(如果要在组件内部中进行强制刷新,则可以调用this.$forceUpdate()强制重新渲染组件)

<template>
	<button @click="reflush()">刷新当前组件</button>
</template>
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator'
@Component({})
export default class extends Vue {
	reflush() {
	    this.$forceUpdate()
	}
}
</script>

扩展:vue中tab切换时请求数据重复问题

问题场景

切换tab时,会请求列表的接口,在then中进行了数据处理(添加到list后面)

ps:list在不同的tab中时同一个

快速点击tab切换时,上一个tab的请求,会在当前的tab的list中处理,导致数据不对

例如:

两个tab:成功列表 & 失败列表

点击成功列表后,且请求未返回时,点击失败列表:这个时候,失败列表中会出现成功列表的数据

解决方案:

大概的代码意思,不能直接复制运行的,参考意思就行

data() {
    return {
      random: new Date().valueOf(),
      activeTab: 0,
      list: []
    };
}
watch: {
    activeTab: {
      handler(val) {
        this.random = new Date().valueOf()
        // 请求list
        this.getList()
      },
    },
}
methods: {
    getList() {
        const random = this.random
        api().then((list) => {
            // 判断处理数据时的tab是不是没变过
            if (this.random != random) return
            this.list = this.list.concat(list)
        })
    }
}

这个只是想到的一个比较简单偷懒的方法,并不是项目中实现的最优方案。结合自己项目情况考虑为好。

axios 取消请求相对而言,比较麻烦,懒,小项目不想写

到此这篇关于vue强制刷新组件的3种方法的文章就介绍到这了,更多相关vue强制刷新组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue3 el-select懒加载以及自定义指令方式

    vue3 el-select懒加载以及自定义指令方式

    这篇文章主要介绍了vue3 el-select懒加载以及自定义指令方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-04-04
  • Vue input输入框中的值如何变成黑点问题

    Vue input输入框中的值如何变成黑点问题

    这篇文章主要介绍了Vue input输入框中的值如何变成黑点问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • vux-scroller实现移动端上拉加载功能过程解析

    vux-scroller实现移动端上拉加载功能过程解析

    这篇文章主要介绍了vux-scroller实现移动端上拉加载功能过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • vuex实现登录状态的存储,未登录状态不允许浏览的方法

    vuex实现登录状态的存储,未登录状态不允许浏览的方法

    下面小编就为大家分享一篇vuex实现登录状态的存储,未登录状态不允许浏览的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • vue内置组件Transition的示例详解

    vue内置组件Transition的示例详解

    这篇文章主要介绍了vue内置组件Transition的详解,简单地说,就是当元素发生变化,比如消失、显示时,添加动画让它更自然过渡,它是vue内置组件,不需要引入注册就可以直接使用,本文通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-09-09
  • axios+vue请求时携带cookie的方法实例

    axios+vue请求时携带cookie的方法实例

    做项目时遇到一个需求,后端需要在接口请求时,对用户登陆状态进行判断,需要在请求时携带Cookie,下面这篇文章主要给大家介绍了关于axios+vue请求时携带cookie的相关资料,需要的朋友可以参考下
    2022-09-09
  • vue如何使用pdf.js实现在线查看pdf文件功能

    vue如何使用pdf.js实现在线查看pdf文件功能

    PDF.js是一个开源的JavaScript库,用于在网页上渲染和显示PDF文件,在Vue中使用PDF.js来预览PDF文件是很常见的需求,这篇文章主要给大家介绍了关于vue如何使用pdf.js实现在线查看pdf文件功能的相关资料,需要的朋友可以参考下
    2024-03-03
  • element-UI el-table修改input值视图不更新问题

    element-UI el-table修改input值视图不更新问题

    这篇文章主要介绍了element-UI el-table修改input值视图不更新问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Vue实现动态添加或者删除对象和对象数组的操作方法

    Vue实现动态添加或者删除对象和对象数组的操作方法

    这篇文章主要介绍了在Vue项目中实现动态添加或者删除对象和对象数组的操作方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • vue实现树形菜单效果

    vue实现树形菜单效果

    这篇文章主要为大家详细介绍了vue实现树形菜单效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03

最新评论