vue項目如何刷新當前頁面


1.場景

在處理列表時,常常有刪除一條數據或者新增數據之后需要重新刷新當前頁面的需求。

2.遇到的問題

1. 用vue-router重新路由到當前頁面,頁面是不進行刷新的

2.采用window.reload(),或者router.go(0)刷新時,整個瀏覽器進行了重新加載,閃爍,體驗不好

3.解決方法

provide / inject 組合

作用:允許一個祖先組件向其所有子孫后代注入一個依賴,不論組件層次有多深,並在起上下游關系成立的時間里始終生效。

 

App.vue:

聲明reload方法,控制router-view的顯示或隱藏,從而控制頁面的再次加載

 1 <template>
 2   <div id="app">
 3     <router-view v-if="isRouterAlive"></router-view>
 4   </div>
 5 </template>
 6 
 7 <script>
 8   export default {
 9     name: 'App',
10     provide(){
11       return{
12         reload:this.reload,
13       }
14     },
15     data(){
16       return{
17         isRouterAlive:true,
18       }
19     },
20     methods:{
21       reload(){
22         this.isRouterAlive = false ;
23         this.$nextTick(function(){
24           this.isRouterAlive = true ;
25         })
26       }
27     }
28   }
29 </script>

tableList.vue:

在頁面注入App.vue組件提供(provide)的 reload 依賴,在邏輯完成之后(刪除或添加...),直接this.reload()調用,即可刷新當前頁面。

 1 export default {
 2     inject:['reload'],//注入reload方法
 3     data() {
 4         return{}
 5     },
 6     methods:{
 7         add(){
 8          .then(res => {
 9           if (res.err_code == 0) {   //數據請求成功后
10             this.reload() //調用reload方法刷新當前頁面
11           }
12         })
13         .catch(res => {
14           console.log(res);
15         });
16         }
17     }
18 }    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM