Vue刷新當(dāng)前路由的方式(2)

這是之前使用的方法,使用的是跳轉(zhuǎn)空白頁(yè)再跳轉(zhuǎn)回來(lái)的方式,雖然也能刷新當(dāng)前路由,但是還是存在一些瑕疵的
Vue刷新當(dāng)前路由的方式(1)
所有這里推薦新的方法,并且算是終極解決方法了吧

provide /inject組合實(shí)現(xiàn)
原理:允許一個(gè)祖先組件向其所有子孫后代注入一個(gè)依賴(lài),不論組件層次有多深,并在起上下游關(guān)系成立的時(shí)間里始終生效

App.vue,聲明reload方法,控制router-view的顯示或隱藏,從而控制頁(yè)面的再次加載。

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

在需要用到刷新的頁(yè)面。在頁(yè)面注入App.vue組件提供(provide)的 reload 依賴(lài),在邏輯完成之后(刪除或添加...),直接this.reload()調(diào)用,即可刷新當(dāng)前頁(yè)面。

在組件內(nèi)注入reload方法

<script>
export default {
  inject:['reload'],
  data(){
    return {
       ... 
    }
  }
}
</script>

之后就是在需要刷新的時(shí)候調(diào)用this.reload()方法了

Vue刷新當(dāng)前路由的方式(1)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容