1. はじめにルーティングを使用して他のページにジャンプする場合、現在のページをキャッシュする必要があります。たとえば、リストページから詳細ページにジャンプする場合、リストのコンテンツをキャッシュする必要があり、スクロールバーの位置を保存する必要があります。場合によっては、キャッシュする必要があるページ内の一部のコンテンツがキャッシュされていないことがあります。つまり、さまざまな状況があります。次にいくつか例を示します。 vue2とvue3の使い方は異なります created() メソッドと mount() メソッドは、ページが初期化されるときに実行されます。ページがキャッシュされている場合、これら 2 つのメソッドは実行されません。また、ページがキャッシュされている場合、vue2 の destroy() メソッドと vue3 の unmounted() メソッドは実行されません。 activated() メソッドはページに入るたびに実行されます 2. 使用1. vue2とvue3の違いvue2: <テンプレート> <div id="nav"> <router-link to="/">ホーム</router-link> | <router-link to="/about">について</router-link> </div> <!-- vue2.x の設定 --> <キープアライブ> <router-view v-if="$route.meta.keepAlive" /> </キープアライブ> <ルータービュー v-if="!$route.meta.keepAlive"/> </テンプレート> vue3: <テンプレート> <div id="nav"> <router-link to="/">ホーム</router-link> | <router-link to="/about">について</router-link> </div> <!-- Vue3.0 構成コンポーネントの書き込みが修正されました --> <router-view v-slot="{ コンポーネント }"> <キープアライブ> <component :is="コンポーネント" v-if="$route.meta.keepAlive"/> </キープアライブ> <component :is="コンポーネント" v-if="!$route.meta.keepAlive"/> </ルータービュー> </テンプレート> route.js での構成: パス: '/'、 名前: 'ホーム'、 コンポーネント: ホーム、 メタ:{ キープアライブ: 真 } 効果: 2. ページ上の一部のデータはキャッシュする必要がないactivated() メソッドで部分的なリフレッシュを必要とするロジックを処理できます。 ... 部分的に更新する必要があるデータ: <input type="text" v-model="newStr" /> ... データ() { 戻る { 新しい文字列: "2", }; }, マウント() { console.log("マウントされたメソッドが実行されました"); this.newStr = "3"; }, アクティブ化() { console.log("actived メソッドが実行されました..."); this.newStr = "4"; } 効果: 3. keepAliveプロパティを動的に設定するvue ファイルで keepAlive プロパティを設定することもできます。これは beforeRouteEnter() メソッドに追加された場合にのみ有効です。つまり、ページに入るときに Home.vue に追加します。 // コンポーネントのガードを使用して、ページを離れるイベントで何かを実行します // to はリダイレクトされるルート、from は前のページのルートです beforeRouteEnter(to, from, next) { to.meta.keepAlive を true に設定します。 //ルートは next() にジャンプし続けます。 } 4. includeとexcludeを使用してキャッシュする必要があるコンポーネントを構成するapp.vue で設定します: <router-view v-slot="{ コンポーネント }"> <キープアライブを含める="testKA"> <コンポーネント:is="コンポーネント"/> </キープアライブ> </ルータービュー> そのうち、testKA はコンポーネントの名前に対応します。 エクスポートデフォルト{ name:'testKA', // キープアライブインクルード属性はコンポーネント名と一致する データ() {戻り値 {}}, アクティブ化() { // キープアライブキャッシュページのライフサイクルは、入力されるたびに実行されます}, } また、include の使用方法は次のとおりです。 <!-- カンマ区切りの文字列 --> <キープアライブを含める="a,b"> <コンポーネント:is="view"></コンポーネント> </キープアライブ> <!-- 正規表現 (`v-bind` を使用) --> <キープアライブ:include="/a|b/"> <コンポーネント :is="view"></コンポーネント> </キープアライブ> <!-- 配列 (`v-bind` を使用) --> <キープアライブ:include="['a', 'b']"> <コンポーネント :is="view"></コンポーネント> </キープアライブ> exclude の使用方法は include と同じで、キャッシュされないコンポーネントを表します。 5. 一部のページはキャッシュする必要があり、一部のページは更新する必要があります説明: 3 つのページ a、b、c がある場合、a->b、b でページが更新され、次に b->c、c->b、b でページは更新されず、次に b->a、a->b、b でページが更新されます。 6. キャッシュは第1レベルのルーティングでのみ有効ですセカンダリルートでキャッシュを使用する必要がある場合は、プライマリルートで同じ設定を行うことができます。 store.js コード: 州: { キープアライブ:[] }, 突然変異: SET_KEEP_ALIVE(状態、パラメータ) { state.keepAlives = パラメータ } }, ゲッター:{ キープアライブ:関数(状態){ state.keepAlivesを返す } } App.vue コード: <テンプレート> <div id="nav"> <router-link to="/bbb">BBB</router-link> | <router-link to="/home">ホーム</router-link> | <router-link to="/about">について</router-link> </div> <router-view v-slot="{ コンポーネント }"> <キープアライブ:include="keepAlive"> <コンポーネント:is="コンポーネント"/> </キープアライブ> </ルータービュー> </テンプレート> <スクリプト> エクスポートデフォルト{ 計算:{ キープアライブ(){ これを返します。$store.getters.keepAlive } } } </スクリプト> Home.vue コード: // コンポーネント内のガードを使用して、ページを離れるイベントで何かを実行します // to はリダイレクトされるルート、from は前のページのルートです beforeRouteEnter(to, from, next) { 次へ(vm=>{ if(from.path == "/bbb"){ vm.$store.commit("SET_KEEP_ALIVE",["ホーム"]) } }); }, beforeRouteLeave(to, from, next) { to.path == "/about"の場合{ console.log("/about ページにリダイレクトされます...") } それ以外 { console.log("/about 以外のページにリダイレクトされます...") this.$store.commit("SET_KEEP_ALIVE",[]) } // ルートは next() にジャンプし続けます。 } 効果: 要約するこれで、vue3 キャッシュ ページ キープアライブと統合ルーティング処理に関するこの記事は終了です。vue3 キャッシュ ページ キープアライブに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: Dockerのデフォルトネットワークセグメントを変更する実装方法の分析
ドキュメントの範囲この記事では、Firefox やその他の Gecko ベースのブラウザ、Safar...
目次1. データベースを理解する1.1 データベースとデータ構造の関係1.2 なぜデータベースが必要...
CentOS7 64でのMySQL5.6.40のインストール手順1) 以前にインストールしたMySQ...
導入データベースを使用したことがある人なら、機能面での like 記号と = 記号の類似点と相違点を...
目次序文:詳しい紹介:練習する:要約する序文: Python、Java、Cシリーズなど、すべての主要...
MySQL のデータ フィールドのタイプを定義することは、データベースを最適化するために非常に重要で...
序文最近、仮想マシンを使用して Ubuntu 18.04 をインストールしました。クローン作成後、I...
目次1. はじめに2. 本文2.1 単一列のソート2.2 複数の列を並べ替える2.3 ソート方法2....
目次安定導入手ぶれ補正シーン1(マウスの動き込み)手ぶれ補正シーン2(キーボードのキー)関数のスロッ...
GROUP BY 句と HAVING 句を紹介する前に、まず SQL 言語の特殊な関数である集計関数...
<br />この世に道はない。より多くの人が歩くようになると、それは道になります。最初は...
最近、MySQL に触れました。昨日、テーブル構造情報を格納するための新しいテーブルを作成しました。...
CS: ...コードをコピーコードは次のとおりです。 html,body{ margin:0px; ...
1. 単純な三角形を実装するCSS ボックス モデルの境界線を使用すると、次のような三角形を実現で...
transform:scale()比例したズームインまたはズームアウトを実現できます。 transi...