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のデフォルトネットワークセグメントを変更する実装方法の分析

推薦する

よく知られているブラウザのDOCTYPEモード選択メカニズム

ドキュメントの範囲この記事では、Firefox やその他の Gecko ベースのブラウザ、Safar...

MySQLデータベースの基礎知識

目次1. データベースを理解する1.1 データベースとデータ構造の関係1.2 なぜデータベースが必要...

CentOS7 64でのMySQL5.6.40の詳細なインストール手順

CentOS7 64でのMySQL5.6.40のインストール手順1) 以前にインストールしたMySQ...

MySQLの最適化の詳細な分析とパフォーマンス

導入データベースを使用したことがある人なら、機能面での like 記号と = 記号の類似点と相違点を...

JavaScript の 7 つのデータ型の詳細な説明

目次序文:詳しい紹介:練習する:要約する序文: Python、Java、Cシリーズなど、すべての主要...

よく使われる3つのMySQLデータ型

MySQL のデータ フィールドのタイプを定義することは、データベースを最適化するために非常に重要で...

Ubuntu 18仮想マシンのクローン作成後に同じIPアドレスになる問題の解決方法

序文最近、仮想マシンを使用して Ubuntu 18.04 をインストールしました。クローン作成後、I...

MySQL での order by の使用に関する詳細

目次1. はじめに2. 本文2.1 単一列のソート2.2 複数の列を並べ替える2.3 ソート方法2....

Web プロジェクト開発 JS 機能の手ぶれ補正とスロットリングのサンプル コード

目次安定導入手ぶれ補正シーン1(マウスの動き込み)手ぶれ補正シーン2(キーボードのキー)関数のスロッ...

SQL文におけるGROUP BYとHAVINGの使用に関する簡単な説明

GROUP BY 句と HAVING 句を紹介する前に、まず SQL 言語の特殊な関数である集計関数...

ウェブデザイナーは適した人材

<br />この世に道はない。より多くの人が歩くようになると、それは道になります。最初は...

MySQL の NULL と空の文字列

最近、MySQL に触れました。昨日、テーブル構造情報を格納するための新しいテーブルを作成しました。...

HTML の左右レイアウトのサンプルコード

CS: ...コードをコピーコードは次のとおりです。 html,body{ margin:0px; ...

三角形を描画するための CSS 実装コード (border メソッド)

1. 単純な三角形を実装するCSS ボックス モデルの境界線を使用すると、次のような三角形を実現で...

マウスを動かしたときに画像のズーム効果とゆっくりとした遷移​​効果を実現するCSSのサンプルコード

transform:scale()比例したズームインまたはズームアウトを実現できます。 transi...