vue項目刷新當前頁面的三種方式(重載當前頁面數(shù)據(jù))
vue項目刷新當前頁面的三種方式(重載當前頁面數(shù)據(jù))
一、this.$router.go(0)
相當于F5刷新,這種方法雖然代碼很少,只有一行,但是體驗很差。頁面會一瞬間的白屏,體驗不是很好
二、location.reload()
這種也是一樣,畫面一閃,體驗不是很好,相當于頁面刷新
推薦解決方法:
三、用provide / inject 組合
原理:允許一個祖先組件向其所有子孫后代注入一個依賴,不論組件層次有多深,并在起上下游關系成立的時間里始終生效
在App.vue,聲明reload方法,控制router-view的顯示或隱藏,從而控制頁面的再次加載。
<template> <div id="app"> <router-view v-if="isRouterAlive"></router-view> </div> </template> <script> export default { name: 'App', provide () { return { reload: this.reload } }, data () { return { isRouterAlive: true } }, methods: { reload () { this.isRouterAlive = false this.$nextTick(function () { this.isRouterAlive = true }) } } } </script>
在需要用到刷新的頁面。在頁面注入App.vue組件提供(provide)的 reload 依賴,在邏輯完成之后(刪除或添加…),直接this.reload()調(diào)用,即可刷新當前頁面。
注入reload方法
export default { inject: ['reload'], }
在需要重載的地方直接調(diào)用
this.reload()
PS:vue項目刷新當前頁面的三種方法
1、最直接整個頁面重新刷新。
location. reload(); this.$router.go(0); // 這兩種都可以刷新當前頁面的,缺點就是相當于按ctrl+F5 強制刷新那種,整個頁面重新加載,會出現(xiàn)一個瞬間的空白頁面,體驗不好。
2、新建一個空白頁面,點擊確定的時候先跳轉(zhuǎn)到這個空白頁,然后再立馬跳轉(zhuǎn)回來。這個方式,相比第一種不會出現(xiàn)一瞬間的空白頁,只是地址欄有個快速的切換的過程,也可采用。
3、provide / inject 刷新相對比較理想。
//首先在app.vue進行修改 <template> <div id="app"> // 控制router-view的顯示或隱藏,從而控制頁面的再次加載 <router-view v-if="isRouterAlive"/> </div> </template> <script> export default { name: "App", provide() { return { reload : this.reload, } }, data() { return { isRouterAlive:true, }; }, created(){}, methods: { // 通過聲明reload方法,控制router-view的顯示或隱藏,從而控制頁面的再次加載 reload(){ this.isRouterAlive = false; this.$nextTick(() => { this.isRouterAlive = true; }) }, }, }; </script>
在需要刷新的頁面引入后直接調(diào)用即可
<template> <div> <el-button icon="el-icon-refresh" @click="refresh">點擊刷新</el-button> </div> </template> <script> export default { //引用vue reload方法 inject: ['reload'], name:"", data() { return { } }, methods: { refresh () { this.reload() } } } </script>
這樣就實現(xiàn)了子組件調(diào)取reload方法就實現(xiàn)了刷新vue組件的功能,而且實現(xiàn)了組件跨越層級傳遞數(shù)據(jù)方法。
到此這篇關于vue項目刷新當前頁面的三種方式(重載當前頁面數(shù)據(jù))的文章就介紹到這了,更多相關vue刷新當前頁面內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Vue?CompositionAPI中watch和watchEffect的區(qū)別詳解
這篇文章主要為大家詳細介紹了Vue?CompositionAPI中watch和watchEffect的區(qū)別,文中的示例代碼簡潔易懂,希望對大家學習Vue有一定的幫助2023-06-06vue中使用vue-print.js實現(xiàn)多頁打印
這篇文章主要介紹了vue中使用vue-print.js實現(xiàn)多頁打印,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-03-03vue3中reactive和ref的實現(xiàn)與區(qū)別詳解
reactive和ref都是vue3實現(xiàn)響應式系統(tǒng)的api,他們是如何實現(xiàn)響應式的呢,reactive和ref又有什么區(qū)別呢,下面小編就來和大家詳細講講,希望對大家有所幫助2023-10-10vue中的data,computed,methods,created,mounted用法及說明
這篇文章主要介紹了vue中的data,computed,methods,created,mounted用法及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07