問題一、微信瀏覽器中無法使用reload重載文檔【VUE框架】 問題分析: 微信不支持location.reload()方法,在微信瀏覽器中會失效 Vue中的路由跳轉是類似於ajax局部刷新,因此使用location.href=‘xxx+時間戳’ 這種方法時,頁面不會重載 Vue自帶的this.$r ...
問題一、微信瀏覽器中無法使用reload重載文檔【VUE框架】
問題分析:
- 微信不支持location.reload()方法,在微信瀏覽器中會失效
- Vue中的路由跳轉是類似於ajax局部刷新,因此使用location.href=‘xxx+時間戳’ 這種方法時,頁面不會重載
- Vue自帶的this.$router.go(0)無效
- history.go(0)無效
vue框架開發解決:
在App.vue中,先在provide中註冊一個用於頁面重載的方法
<template> <div class="app-wrapper"> <router-view v-if="isRouterAlive" /> </div> </template> <script> export default { name: 'app', provide () { return { appReload: this.reload // 通過provider來提供變數 } }, data () { return { isRouterAlive: true // 解決微信端頁面刷新問題 } }, methods: { // 實現重載 reload () { this.isRouterAlive = false this.$nextTick(() => { this.isRouterAlive = true }) } } } </script>
然後在子組件中通過inject來註入變數,直接調用reload就可以了
<template> <div> <button @click="handlerReload">刷新</button> </div> </template> <script> export default { inject: ['appReload'], // 通過inject來註入變數 methods: { handlerReload () { this.appReload() } } } </script>
擴展知識:
provider/inject:簡單的來說就是在父組件中通過provider來提供變數,然後在子組件中通過inject來註入變數。 這對選項需要一起使用,以允許一個祖先組件向其所有子孫後代註入一個依賴,不論組件層次有多深,併在起上下游關係成立的時間里始終生效。
參考資料:https://blog.csdn.net/Lucky_Q/article/details/89097423