文章目錄
- 一、在根組件中給router-view動態綁定上v-if。
- 二、調用重新加載下級組件方法。
在有些需求情況下需要重新加載頁面或者觸發組件的生命周期,但是刷新對用戶體驗不太友好,這個時候我們可以通過provide/inject可以輕松實現跨級訪問祖先組件的數據,使用v-if讓App.vue重新加載。
一、在根組件中給router-view動態綁定上v-if。
<template><div id="app" ref="app"><router-view v-if="isRouterShow"/></div>
</template><script>export default {name: 'App',provide () { // 通過provide把方法傳遞給子孫組件使用return {reload: this.reload }},data() {return {isReload: true // 控制組件顯隱}},methods: {async reload () { //觸發顯示隱藏this.isReload = false;await this.$nextTick()this.isReload = true;},}
</script>
二、調用重新加載下級組件方法。
這里需要在下級組件中使用inject獲取方法進行調用即可。
export default {inject: ['reload'], //接收App.vue傳遞的方法methods: {reloadHandle () {this.reload() //直接調用}}
}