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)文章
vux-scroller實(shí)現(xiàn)移動(dòng)端上拉加載功能過程解析
這篇文章主要介紹了vux-scroller實(shí)現(xiàn)移動(dòng)端上拉加載功能過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
vuex實(shí)現(xiàn)登錄狀態(tài)的存儲(chǔ),未登錄狀態(tài)不允許瀏覽的方法
下面小編就為大家分享一篇vuex實(shí)現(xiàn)登錄狀態(tài)的存儲(chǔ),未登錄狀態(tài)不允許瀏覽的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-03-03
axios+vue請求時(shí)攜帶cookie的方法實(shí)例
做項(xiàng)目時(shí)遇到一個(gè)需求,后端需要在接口請求時(shí),對用戶登陸狀態(tài)進(jìn)行判斷,需要在請求時(shí)攜帶Cookie,下面這篇文章主要給大家介紹了關(guān)于axios+vue請求時(shí)攜帶cookie的相關(guān)資料,需要的朋友可以參考下2022-09-09
vue如何使用pdf.js實(shí)現(xiàn)在線查看pdf文件功能
PDF.js是一個(gè)開源的JavaScript庫,用于在網(wǎng)頁上渲染和顯示PDF文件,在Vue中使用PDF.js來預(yù)覽PDF文件是很常見的需求,這篇文章主要給大家介紹了關(guān)于vue如何使用pdf.js實(shí)現(xiàn)在線查看pdf文件功能的相關(guān)資料,需要的朋友可以參考下2024-03-03
element-UI el-table修改input值視圖不更新問題
這篇文章主要介紹了element-UI el-table修改input值視圖不更新問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
Vue實(shí)現(xiàn)動(dòng)態(tài)添加或者刪除對象和對象數(shù)組的操作方法
這篇文章主要介紹了在Vue項(xiàng)目中實(shí)現(xiàn)動(dòng)態(tài)添加或者刪除對象和對象數(shù)組的操作方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09

