vue子頁面控制父頁面刷新問題
vue子頁面控制父頁面刷新
父頁面
?//父組件調(diào)用子組件 <el-dialog :visible.sync="showDialog" width="65%"> ? ? ? <version ? ? ? ? v-if="showDialog" ? ? ? ? :versionId="versionId" ? ? ? ? :currentVersion="currentVersion" ? ? ? ? :batchNo="batchNo" ? ? ? ? :showDialog="showDialog" ? ? ? ? :subjectList="subject" ? ? ? ? @on-load = "onLoad" ? ? ? ? @refresh-change="handleRefreshChange"http://調(diào)用方法 ? ? ? ></version> ? ? </el-dialog> methods:{ handleRefreshChange() { ? ? ? this.onLoad(this.page);//調(diào)用父組件的刷新方法 ? ? }, }
子頁面
//在需要點擊后刷新的位置添加上 this.$emit('refresh-change',true);
vue刷新頁面的三種方式,并處理死循環(huán)
vue頁面刷新的辦法和處理頁面重復(fù)循環(huán)。先寫一下刷新頁面的方法,解決循環(huán)放在下邊。
1.直接使用刷新當(dāng)前頁面
會有短暫白屏,體驗效果不好
location.reload();
2.通過路由傳入0,刷新當(dāng)前頁面
忽悠短暫白屏,體驗效果不好
this.$router.go(0);
3.通過provide / inject組合
這個體驗感是最好的!
第一步:先在App.vue里 給 <router-view> 加一個 if 判斷,通過 $nextTick()實現(xiàn)先移除再添加達(dá)到刷新的功能。
<template> ? <div id="app"> ? ? <router-view v-if="isRouterAlive"> </router-view> ? </div> </template> <script> export default { ? name: "App", ? data() { ? ? return { ? ? ? isRouterAlive: true, ? ? }; ? }, ? provide() { ? ? return { ? ? ? reload: this.reload, ? ? }; ? }, ? methods: { ? ? reload() { ? ? ? this.isRouterAlive = false; //先關(guān)閉, ? ? ? this.$nextTick(function () { ? ? ? ? this.isRouterAlive = true; //再打開 ? ? ? }); ? ? }, ? }, }; </script>
第二步:在需要用到刷新的頁面接收 inject:['reload']
export default { ? ? inject:['reload'],? ? ? data () { ? ? ? ? return {} ? ? },
第三步:在需要使用到刷新的地方直接調(diào)用
this.reload();
接下來,說下死循環(huán),這個是因為刷新頁面后,這段代碼又重新執(zhí)行。
想要解決有兩種方法
1.在想要刷新的地方使用點擊事件,這樣只有在點擊的時候會觸發(fā)這個刷新事件
<template> ? <div> ? ? <button @click="cli"></button> ? </div> </template> <script> export default { ? name: "1", ? methods: { ? ? cli() { ? ? ? this.$router.go(0); //我這里隨便用一種刷新的方法 ? ? }, ? }, }; </script> <style scoped> </style>
2.這種方法,使用定時器的辦法,不通過手動點擊,自動觸發(fā)
<template> ? <div></div> </template> <script> export default { ? name: "1", ? mounted() { ? ? setInterval(() => { ? ? ? this.$router.go(0); //我這里隨便用一種刷新的方法 ? ? }, 300000); //每5分鐘自動調(diào)用一次 ? }, }; </script> <style scoped> </style>
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue el-table實現(xiàn)行內(nèi)編輯功能
這篇文章主要為大家詳細(xì)介紹了vue el-table實現(xiàn)行內(nèi)編輯功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-12-12jdk1.8+vue elementui實現(xiàn)多級菜單功能
這篇文章主要介紹了jdk1.8+vue elementui實現(xiàn)多級菜單功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09Vue實現(xiàn)當(dāng)訪問的路由不存在時跳轉(zhuǎn)到404頁面的方法詳解
在 Vue3 中,可以使用 Vue Router 實現(xiàn)跳轉(zhuǎn)到 404 頁面,即當(dāng)用戶訪問一個不存在路由時,系統(tǒng)會默認(rèn)跳轉(zhuǎn)到 404 頁面,本文給大家介紹了一個簡單的實現(xiàn)方法,需要的朋友可以參考下2023-12-12Vue MVVM模型與data及methods屬性超詳細(xì)講解
MVVM旨在利用WPF中的數(shù)據(jù)綁定函數(shù),通過從視圖層中幾乎刪除所有GUI代碼(代碼隱藏),更好地促進(jìn)視圖層開發(fā)與模式其余部分的分離,這篇文章主要介紹了Vue MVVM模型與data及methods屬性2022-10-10