vue3 キャッシュページキープアライブと統合ルーティング処理の詳細な説明

vue3 キャッシュページキープアライブと統合ルーティング処理の詳細な説明

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 でページが更新されます。
セルフテストはvuexでのみ実現できますが、欠点はページがキャッシュされているときにactivated()メソッドが実行されないことです。

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 をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • キャッシュ ページ効果を実現するために vue-router で keep-Alive を実行するサンプル コード
  • キャッシュされたページを柔軟にするkeep-alive + vuexの詳細な説明
  • Vue 組み込みコンポーネントのキープアライブ イベントの動的キャッシュの例
  • Vue プロジェクト keepAlive は vuex と連携してルーティング キャッシュ モードを動的に設定します

<<:  MySQLインデックスに関する詳細を共有する

>>:  Dockerのデフォルトネットワークセグメントを変更する実装方法の分析

推薦する

Docker で Spring-boot プロジェクトをデプロイするためのサンプル コード

1. 基本的な Spring-boot クイックスタート1.1 クイックスタート pom.xml は...

MySQL インデックスの長所と短所、およびインデックス作成のガイドライン

1. インデックスを作成する理由(メリット)インデックスを作成するとシステムのパフォーマンスが大幅に...

MySQL の削除に基づく構文エイリアスの問題

目次MySQL 削除構文エイリアスの問題mysql の delete ステートメントでエイリアスを使...

elementui での el-cascader カスケードセレクタの実践

目次1. 効果2. メインコード1. 効果機能: インターフェイスから取得したデータを使用してオプシ...

Gogs+Jenkins+Docker による .NetCore ステップの自動デプロイ

目次環境説明DockerのインストールゴグのインストールDocker で .NetCore サービス...

HTML要素を非表示にするいくつかの方法

1. CSSを使用するコードをコピーコードは次のとおりです。スタイル="display:n...

MySQL の時間設定に関する考慮事項の詳細な要約

時間は本当に存在するのでしょうか?時間は人間が考え出した概念に過ぎず、物事の変化を測る基準に過ぎない...

JS関数の呼び出し、適用、バインドの超詳細な方法

目次JS 関数呼び出し、適用、バインドメソッド1. call() メソッド1. call() メソッ...

DIV共通属性コレクション

1. 物件リストコードをコピーコードは次のとおりです。色: #999999 テキスト色フォントファミ...

HTML+CSS3+JSで実装されたドロップダウンメニュー

成果を達成する html <div class="コンテナ"> &l...

Vueで背景色と透明度を設定する方法

背景色と透明度の設定上記のように、最初の画像の場合は、灰色の背景と左上隅に白い「カバー」という文字を...

Tomcat でタイムアウトしたセッションを監視および削除する方法

序文偶然、30 分の Tomcat セッション時間は、セッションが作成された後、30 分間のみ有効で...

HTMLフローティングプロンプトボックス機能の実装コード

一般的なフォーム プロンプトは常にフォームのスペースを占有し、フォームが長くなったり広くなったりして...

HTML文書の基本構造(Webページ作成の基礎知識)

HTMLの動作原理: 1. ローカル操作: ブラウザでhtmlファイルを開く2. リモートアクセス...