vue子頁(yè)面控制父頁(yè)面刷新問(wèn)題
vue子頁(yè)面控制父頁(yè)面刷新
父頁(yè)面
?//父組件調(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)用父組件的刷新方法 ? ? }, }
子頁(yè)面
//在需要點(diǎn)擊后刷新的位置添加上 this.$emit('refresh-change',true);
vue刷新頁(yè)面的三種方式,并處理死循環(huán)
vue頁(yè)面刷新的辦法和處理頁(yè)面重復(fù)循環(huán)。先寫(xiě)一下刷新頁(yè)面的方法,解決循環(huán)放在下邊。
1.直接使用刷新當(dāng)前頁(yè)面
會(huì)有短暫白屏,體驗(yàn)效果不好
location.reload();
2.通過(guò)路由傳入0,刷新當(dāng)前頁(yè)面
忽悠短暫白屏,體驗(yàn)效果不好
this.$router.go(0);
3.通過(guò)provide / inject組合
這個(gè)體驗(yàn)感是最好的!
第一步:先在App.vue里 給 <router-view> 加一個(gè) if 判斷,通過(guò) $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; //再打開(kāi) ? ? ? }); ? ? }, ? }, }; </script>
第二步:在需要用到刷新的頁(yè)面接收 inject:['reload']
export default { ? ? inject:['reload'],? ? ? data () { ? ? ? ? return {} ? ? },
第三步:在需要使用到刷新的地方直接調(diào)用
this.reload();
接下來(lái),說(shuō)下死循環(huán),這個(gè)是因?yàn)樗⑿马?yè)面后,這段代碼又重新執(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í)器的辦法,不通過(guò)手動(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í)菜單功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09Vue實(shí)現(xiàn)當(dāng)訪問(wèn)的路由不存在時(shí)跳轉(zhuǎn)到404頁(yè)面的方法詳解
在 Vue3 中,可以使用 Vue Router 實(shí)現(xiàn)跳轉(zhuǎn)到 404 頁(yè)面,即當(dāng)用戶訪問(wèn)一個(gè)不存在路由時(shí),系統(tǒng)會(huì)默認(rèn)跳轉(zhuǎn)到 404 頁(yè)面,本文給大家介紹了一個(gè)簡(jiǎn)單的實(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ù),通過(guò)從視圖層中幾乎刪除所有GUI代碼(代碼隱藏),更好地促進(jìn)視圖層開(kāi)發(fā)與模式其余部分的分離,這篇文章主要介紹了Vue MVVM模型與data及methods屬性2022-10-10