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)。先寫一下刷新頁(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-12
jdk1.8+vue elementui實(shí)現(xiàn)多級(jí)菜單功能
這篇文章主要介紹了jdk1.8+vue elementui實(shí)現(xiàn)多級(jí)菜單功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
Vue實(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-12
vue實(shí)現(xiàn)3D切換滾動(dòng)效果
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)偽3D切換滾動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04
Vue MVVM模型與data及methods屬性超詳細(xì)講解
MVVM旨在利用WPF中的數(shù)據(jù)綁定函數(shù),通過(guò)從視圖層中幾乎刪除所有GUI代碼(代碼隱藏),更好地促進(jìn)視圖層開(kāi)發(fā)與模式其余部分的分離,這篇文章主要介紹了Vue MVVM模型與data及methods屬性2022-10-10

