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