微信web開發問題記錄

問題1、微信瀏覽器中沒法使用reload重載文檔【VUE框架】

問題分析:vue

  • 微信不支持location.reload()方法,在微信瀏覽器中會失效
  • Vue中的路由跳轉是相似於ajax局部刷新,所以使用location.href=‘xxx+時間戳’ 這種方法時,頁面不會重載
  • Vue自帶的this.$router.go(0)無效
  • history.go(0)無效

vue框架開發解決:ajax

在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>

擴展知識:app

provider/inject:簡單的來講就是在父組件中經過provider來提供變量,而後在子組件中經過inject來注入變量。
這對選項須要一塊兒使用,以容許一個祖先組件向其全部子孫後代注入一個依賴,不論組件層次有多深,並在起上下游關係成立的時間裏始終生效。

參考資料:https://blog.csdn.net/Lucky_Q/article/details/89097423框架

相關文章
相關標籤/搜索