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頁面刷新的辦法和處理頁面重復循環(huán)。先寫一下刷新頁面的方法,解決循環(huán)放在下邊。
1.直接使用刷新當前頁面
會有短暫白屏,體驗效果不好
location.reload();
2.通過路由傳入0,刷新當前頁面
忽悠短暫白屏,體驗效果不好
this.$router.go(0);
3.通過provide / inject組合
這個體驗感是最好的!
第一步:先在App.vue里 給 <router-view> 加一個 if 判斷,通過 $nextTick()實現(xiàn)先移除再添加達到刷新的功能。
<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)文章
使用vuetify實現(xiàn)全局v-alert消息通知的方法
使用強大的Vuetify開發(fā)前端頁面,結(jié)果發(fā)現(xiàn)官方?jīng)]有提供簡便的全局消息通知組件,所以自己動手寫了一個簡單的組件,接下來通過本文給大家介紹使用vuetify實現(xiàn)全局v-alert消息通知的詳細代碼,感興趣的朋友跟隨小編一起看看吧2024-02-02
基于Vue2實現(xiàn)簡易的省市區(qū)縣三級聯(lián)動組件效果
這是一個基于Vue2的簡易省市區(qū)縣三級聯(lián)動組件,可以控制只顯示省級或只顯示省市兩級,可設(shè)置默認值等。提供原始省市縣代碼和名稱數(shù)據(jù),適用于各種有關(guān)城市區(qū)縣的應用。需要的朋友可以參考下2018-11-11
淺談Vue使用Cascader級聯(lián)選擇器數(shù)據(jù)回顯中的坑
這篇文章主要介紹了淺談Vue使用Cascader級聯(lián)選擇器數(shù)據(jù)回顯中的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-10-10

