vueコンポーネントをkeep-aliveにキャッシュしない方法
6426 ワード
開発ニーズ動的展示システムトップページのすべての構造 日付照会対応するデータをクリックして対応するページをクリックして前のページに戻ると「ジャンプ前の日付データ状態の保持を要求する」 .システムトップページのみに対してデータキャッシュ を行う.
vue内蔵コンポーネントkeep-aliveを使用してキャッシュし、所望の機能を実現
発生した問題 keep-aliveパッケージを使用するルーティングは、すべてのページをキャッシュし、前回のデータが開発要件と一致しない を任意に保持する.キャッシュのせいでページ破棄のフック関数「deactivated」 に行かなかった
公式サイトの解析
「keep-alive」がダイナミックコンポーネントを包むと、アクティブでないコンポーネントインスタンスがキャッシュされ、破棄されるわけではありません.keep-aliveは抽象的なコンポーネントです.DOM要素はレンダリングされず、コンポーネントの親コンポーネントチェーンにも表示されません.コンポーネントがkeep-alive内で切り替わると、activatedとdeactivatedの2つのライフサイクルフック関数が対応して実行されます.
コンポーネントをincludeおよびexclude propにより条件付きでキャッシュできます.文字列、正規表現、または配列をカンマで区切ることができます.
include-文字列または正規表現.一致するコンポーネントのみがキャッシュされます.
exclude-文字列または正規表現.一致するコンポーネントはキャッシュされません.
実際の開発ソリューション
第1種
キャッシュしたくないコンポーネントに、keep-aliveによってコンポーネントがキャッシュされないように設定する方法を追加できます.ルーティングジャンプ前にページを破棄してキャッシュを消去し、次回のアクセス時にページデータを新しいロードすることが原理です.
第2種
公式サイトで与えられた方法でinclude設定コンポーネントで条件付きキャッシュ(選択可能なキャッシュ)
キャッシュしたいコンポーネントで名前を定義します(必ず書きます)
vue内蔵コンポーネントkeep-aliveを使用してキャッシュし、所望の機能を実現
発生した問題
公式サイトの解析
「keep-alive」がダイナミックコンポーネントを包むと、アクティブでないコンポーネントインスタンスがキャッシュされ、破棄されるわけではありません.keep-aliveは抽象的なコンポーネントです.DOM要素はレンダリングされず、コンポーネントの親コンポーネントチェーンにも表示されません.コンポーネントがkeep-alive内で切り替わると、activatedとdeactivatedの2つのライフサイクルフック関数が対応して実行されます.
コンポーネントをincludeおよびexclude propにより条件付きでキャッシュできます.文字列、正規表現、または配列をカンマで区切ることができます.
include-文字列または正規表現.一致するコンポーネントのみがキャッシュされます.
exclude-文字列または正規表現.一致するコンポーネントはキャッシュされません.
実際の開発ソリューション
第1種
キャッシュしたくないコンポーネントに、keep-aliveによってコンポーネントがキャッシュされないように設定する方法を追加できます.ルーティングジャンプ前にページを破棄してキャッシュを消去し、次回のアクセス時にページデータを新しいロードすることが原理です.
<template>
<div>
</div>
</template>
<script>
export default {
data() {
return {
}
},
methods:{
},
// keep-alive
deactivated() {
this.$destroy();
}
}
</script>
<style scoped>
</style>
第2種
公式サイトで与えられた方法でinclude設定コンポーネントで条件付きキャッシュ(選択可能なキャッシュ)
<keep-alive :include="routerName">
<router-view />
</keep-alive>
data(){
return {
//
routerName: {
'homePage' //
}
}
}
キャッシュしたいコンポーネントで名前を定義します(必ず書きます)
<template>
<div>
</div>
</template>
<script>
export default {
// name include
name:'homePage',
data() {
return {
};
},
methods:{
}
}
</script>
<style scoped>
</style>