vueナビゲーションメニューのリフレッシュページの再ロード
1721 ワード
Knowledge Baseプロジェクトナビゲーションメニューバーをクリックサブメニューをクリックしてページをリフレッシュする必要があります
アプリケーションvueは、現在のページ内でルーティングパラメータが変化し、ページリフレッシュをどのように行うかを示します.
伝統的な方法location.reload(); ページ全体をリフレッシュすると、白い画面が表示され、体験が悪いです.router.go(0); 同じように、体験が友好的ではない.
推奨方法provide/injectの組合せ原理を使用します.コンポーネントの階層がどれだけ深くても、上下流関係が成立する時間内に常に有効になるように、祖先コンポーネントが子孫子孫に依存を注入することを許可します.
provide:オブジェクトまたはオブジェクト関数を返すinject:文字列配列、またはオブジェクト.オブジェクトのkeyはローカルのバインド名
ルーティング配布の変更
サイドメニューバーのコード部分に次のコードを追加
アプリケーションvueは、現在のページ内でルーティングパラメータが変化し、ページリフレッシュをどのように行うかを示します.
伝統的な方法location.reload(); ページ全体をリフレッシュすると、白い画面が表示され、体験が悪いです.router.go(0); 同じように、体験が友好的ではない.
推奨方法provide/injectの組合せ原理を使用します.コンポーネントの階層がどれだけ深くても、上下流関係が成立する時間内に常に有効になるように、祖先コンポーネントが子孫子孫に依存を注入することを許可します.
provide:オブジェクトまたはオブジェクト関数を返すinject:文字列配列、またはオブジェクト.オブジェクトのkeyはローカルのバインド名
ルーティング配布の変更
// app.vue v-if="isRouterAlive"
export default {
name: 'app',
// ( / )
provide() {
return{
reload: this.reload
}
},
data() {
return{
isRouterAlive: true
}
},
methods: {
//
reload () {
this.isRouterAlive = false;
this.$nextTick(function () {
this.isRouterAlive = true
})
}
},
}
サイドメニューバーのコード部分に次のコードを追加
// handleselect
export default {
inject: ['reload'], // ( )
//
watch: {
// ,
'$route': function(){
// this.reload();
}
},
methods: {
handleselect: function (a, b) {
this.reload() //
},
}
}