vue強(qiáng)制刷新組件的三種方法
通過組件的key值來刷新
(當(dāng)某個(gè)組件的key變化后,組件都會(huì)被重新渲染一遍)
<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來刷新
(當(dāng)v-if的值發(fā)生變化時(shí),組件都會(huì)被重新渲染一遍)
<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
// 監(jiān)視data是否發(fā)生變化
@Watch('data')
watchData() {
// 移除組件
this.refresh = false
// this.$nextTick可實(shí)現(xiàn)在DOM 狀態(tài)更新后,執(zhí)行傳入的方法。
this.$nextTick(() => {
// 重新渲染組件
this.refresh = true
})
}
}
</script>通過this $forceUpdate強(qiáng)制重新渲染
(如果要在組件內(nèi)部中進(jìn)行強(qiáng)制刷新,則可以調(diào)用this.$forceUpdate()強(qiáng)制重新渲染組件)
<template>
<button @click="reflush()">刷新當(dāng)前組件</button>
</template>
<script lang="ts">
import { Component, Vue } from 'vue-property-decorator'
@Component({})
export default class extends Vue {
reflush() {
this.$forceUpdate()
}
}
</script>擴(kuò)展:vue中tab切換時(shí)請求數(shù)據(jù)重復(fù)問題
問題場景
切換tab時(shí),會(huì)請求列表的接口,在then中進(jìn)行了數(shù)據(jù)處理(添加到list后面)
ps:list在不同的tab中時(shí)同一個(gè)
快速點(diǎn)擊tab切換時(shí),上一個(gè)tab的請求,會(huì)在當(dāng)前的tab的list中處理,導(dǎo)致數(shù)據(jù)不對
例如:
兩個(gè)tab:成功列表 & 失敗列表
點(diǎn)擊成功列表后,且請求未返回時(shí),點(diǎn)擊失敗列表:這個(gè)時(shí)候,失敗列表中會(huì)出現(xiàn)成功列表的數(shù)據(jù)
解決方案:
大概的代碼意思,不能直接復(fù)制運(yùn)行的,參考意思就行
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) => {
// 判斷處理數(shù)據(jù)時(shí)的tab是不是沒變過
if (this.random != random) return
this.list = this.list.concat(list)
})
}
}這個(gè)只是想到的一個(gè)比較簡單偷懶的方法,并不是項(xiàng)目中實(shí)現(xiàn)的最優(yōu)方案。結(jié)合自己項(xiàng)目情況考慮為好。
axios 取消請求相對而言,比較麻煩,懶,小項(xiàng)目不想寫
到此這篇關(guān)于vue強(qiáng)制刷新組件的3種方法的文章就介紹到這了,更多相關(guān)vue強(qiáng)制刷新組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue組件強(qiáng)制刷新的4種方案
- Vue3中進(jìn)行頁面局部刷新組件刷新的操作方法
- Vue?Router解決多路由復(fù)用同一組件頁面不刷新問題(場景分析)
- vue組件值變化但不刷新強(qiáng)制組件刷新的問題
- Vue實(shí)現(xiàn)父子組件頁面刷新的幾種常用方法
- vue打開子組件彈窗都刷新功能的實(shí)現(xiàn)
- vue相同路由跳轉(zhuǎn)強(qiáng)制刷新該路由組件操作
- 解決vue更新路由router-view復(fù)用組件內(nèi)容不刷新的問題
- vue強(qiáng)制刷新組件的方法示例
- Vue 實(shí)現(xiàn)手動(dòng)刷新組件的方法
- 使用Vue開發(fā)動(dòng)態(tài)刷新Echarts組件的教程詳解
相關(guān)文章
十個(gè)有用的自定義Vue鉤子函數(shù)總結(jié)
這篇文章主要為大家介紹了十個(gè)Vue.js中有用的自定義鉤子,讓我們的代碼更加好看。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-04-04
vue directive全局自定義指令實(shí)現(xiàn)按鈕級別權(quán)限控制的操作方法
這篇文章主要介紹了vue directive全局自定義指令實(shí)現(xiàn)按鈕級別權(quán)限控制,本文結(jié)合實(shí)例代碼對基本概念做了詳細(xì)講解,需要的朋友可以參考下2023-02-02
Vue2.0實(shí)現(xiàn)調(diào)用攝像頭進(jìn)行拍照功能 exif.js實(shí)現(xiàn)圖片上傳功能
這篇文章主要為大家詳細(xì)介紹了Vue2.0實(shí)現(xiàn)調(diào)用攝像頭進(jìn)行拍照功能,以及圖片上傳功能引用exif.js,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
vue基于element-china-area-data插件實(shí)現(xiàn)省市區(qū)聯(lián)動(dòng)
省市區(qū)聯(lián)動(dòng)在日常開發(fā)中用的非常多,本文就介紹一下vue基于element-china-area-data插件實(shí)現(xiàn)省市區(qū)聯(lián)動(dòng),具有一定的參考價(jià)值,感興趣的可以了解一下2022-04-04
使用vue-cli(vue腳手架)快速搭建項(xiàng)目的方法
本篇文章主要介紹了使用vue-cli(vue腳手架)快速搭建項(xiàng)目的方法,vue-cli 是一個(gè)官方發(fā)布 vue.js 項(xiàng)目腳手架,使用 vue-cli 可以快速創(chuàng)建 vue 項(xiàng)目,感興趣的小伙伴們可以參考一下2018-05-05
uniapp+Vue實(shí)現(xiàn)App端用戶每日彈出簽到彈窗功能
用戶簽到這個(gè)功能是很多APP、小程序等都具備的,也是其成長體系中的重要環(huán)節(jié),這篇文章主要介紹了uniapp+Vue實(shí)現(xiàn)App端用戶每日彈出簽到彈窗功能的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2026-05-05
Vue開發(fā)手冊Function-based?API?RFC
這篇文章主要為大家介紹了Vue開發(fā)手冊Function-based?API?RFC使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11

