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のデフォルトネットワークセグメントを変更する実装方法の分析
1. 基本的な Spring-boot クイックスタート1.1 クイックスタート pom.xml は...
HTML構造 <本文> <div class="wrapper"...
1. インデックスを作成する理由(メリット)インデックスを作成するとシステムのパフォーマンスが大幅に...
目次MySQL 削除構文エイリアスの問題mysql の delete ステートメントでエイリアスを使...
目次1. 効果2. メインコード1. 効果機能: インターフェイスから取得したデータを使用してオプシ...
目次環境説明DockerのインストールゴグのインストールDocker で .NetCore サービス...
1. CSSを使用するコードをコピーコードは次のとおりです。スタイル="display:n...
時間は本当に存在するのでしょうか?時間は人間が考え出した概念に過ぎず、物事の変化を測る基準に過ぎない...
目次JS 関数呼び出し、適用、バインドメソッド1. call() メソッド1. call() メソッ...
1. 物件リストコードをコピーコードは次のとおりです。色: #999999 テキスト色フォントファミ...
成果を達成する html <div class="コンテナ"> &l...
背景色と透明度の設定上記のように、最初の画像の場合は、灰色の背景と左上隅に白い「カバー」という文字を...
序文偶然、30 分の Tomcat セッション時間は、セッションが作成された後、30 分間のみ有効で...
一般的なフォーム プロンプトは常にフォームのスペースを占有し、フォームが長くなったり広くなったりして...
HTMLの動作原理: 1. ローカル操作: ブラウザでhtmlファイルを開く2. リモートアクセス...