Vue フロントエンド開発における keepAlive の使用方法の詳細な説明

Vue フロントエンド開発における keepAlive の使用方法の詳細な説明

序文

keep-alive は Vue の組み込みコンポーネントです。動的コンポーネントをラップすると、非アクティブなコンポーネント インスタンスを破棄するのではなくキャッシュします。

コンポーネントの切り替え中、状態はメモリ内に保持され、DOM レンダリングの繰り返しを防ぎ、読み込み時間とパフォーマンスの消費を削減し、ユーザー エクスペリエンスを向上させます。使い方

<キープアライブ>
    <コンポーネント />
</キープアライブ>

ここのコンポーネントはキャッシュされます。

keep-avlive フック関数

keep-alive で作成されたコンポーネントには、activated と deactivated という 2 つのライフサイクル フックが追加されます。 activated: キープアライブコンポーネントがアクティブ化されたときに呼び出されます。キープアライブはデータをメモリ内に保持します。ページに入るたびに最新のデータを取得したい場合は、元の create フック関数でデータを取得するタスクを引き受け、アクティブ化された段階でデータを取得する必要があります。
deactivated: キープアライブコンポーネントが非アクティブ化されたときに呼び出されます。キープアライブが使用されている場合、コンポーネントは破棄されずにキャッシュされるため、beforeDestory フックと destroy フックは呼び出されません。したがって、deactivated フックは、localStorge データのクリアなど、beforeDestory と destroy の代替として考えることができます。

keep-avliveはどのコンポーネントをキャッシュするか

keep-avlive でコンポーネントをキャッシュする方法は 2 つあります。1 つは、keep-avlive コンポーネントによって提供される include および exclude プロパティを使用して、キャッシュ用のパラメータを通じて対応するコンポーネントを一致させる方法です。もう 1 つは、ルートに meta 属性を設定する方法です。
includeプロパティとexcludeプロパティを使用してキャッシュコンポーネントの設定を完了します

/* test という名前のコンポーネントをキャッシュします*/
<キープアライブ include='テスト'>
      <ルータービュー/>
</キープアライブ>

include を使用して、test という名前のコンポーネントをキャッシュします。

<keep-alive exclude="テスト"> 
  <ルータービュー/>
</キープアライブ>

exclude を使用すると、test という名前のコンポーネントはキャッシュされません。
ルート内のメタ属性を使用してキャッシュコンポーネントを設定します。

デフォルトの新しいルーターをエクスポートします({
  モード: '履歴'、
  ルート: [
    {
      パス: '/'、
      名前: 'ホーム',
      コンポーネント: ホーム、
      リダイレクト: '商品'、
      子供たち: [
        {
          パス: '商品',
          名前: 「商品」、
          構成要素: 商品、
          メタ: {
        	keepAlive: false // キャッシュは不要 }
        },
        {
          パス: '評価',
          名前: '評価',
          コンポーネント: 評価、
          メタ: {
        	keepAlive: true // キャッシュが必要 }
        }
      ]
    }
  ]
})

商品コンポーネントはキャッシュする必要がありますが、評価はキャッシュする必要はありません。コンポーネントキャッシュ設定を動的に完了するには、次のステートメントを使用します。設定コードは次のとおりです。

<テンプレート>
  <div id="アプリ">
  	<キープアライブ>
      <ルータービュー v-if="$route.meta.keepAlive"></ルータービュー>
    </キープアライブ>
    <ルータービュー v-if="!$route.meta.keepAlive"></ルータービュー>
  </div>
</テンプレート>

KeepCom1 と KeepCom2 の 2 つのコンポーネントを設定します。KeepCom1 にはキャッシュを設定し、KeepCom2 にはキャッシュを設定しません。 2 つのフック関数を同時に使用してテストします。ここでは、ルーティング メタを使用してキャッシュ コンポーネントの設定を実装します。
KeepCom1 コードは次のとおりです。

<テンプレート>
  <div class="wrapper">
    <ul class="content"></ul>
    <button class="add" id="add" @click="add">子要素を追加</button>
  </div>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
  名前: 'keepCom1',
  メソッド: {
    追加 () {
      ul = document.getElementsByClassName('content')[0] とします。
      li = document.createElement('li') とします。
      li.innerHTML = '要素を追加しています'
      ul.appendChild(li)
    }
  },
  アクティブ化(){
    console.log('キャッシュがアクティブ化された実行')
  },
  非アクティブ化(){
    console.log('キャッシュが非アクティブ化された実行')
  }
}
</スクリプト>
<スタイル>
</スタイル>

KeepCom2 コードは次のとおりです。

<テンプレート>
  <div class="wrapper">
    <ul class="content"></ul>
    <button class="add" id="add" @click="add">子要素を追加</button>
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  名前: 'keepCom2',
  メソッド: {
    追加 () {
      ul = document.getElementsByClassName('content')[0] とします。
      li = document.createElement('li') とします。
      li.innerHTML = '要素を追加しています'
      ul.appendChild(li)
    }
  },
  アクティブ化(){
    console.log('キャッシュがアクティブ化された実行')
  },
  非アクティブ化(){
    console.log('キャッシュが非アクティブ化された実行')
  }
}
</スクリプト>
<スタイル>
</スタイル>

KeepCom1 と KeepCom2 のコードは基本的に同じで、ページにノードを追加します。
keepAvliveTestコードは次のとおりです。

<テンプレート>
  <div align="center" style="margin-top: 20px;">
    <router-link to="/keepAvliveTest/keepcom1">キャッシュを使用する</router-link>
    <router-link to="/keepAvliveTest/keepcom2">キャッシュを使用しない</router-link>
    <キープアライブ>
      <ルータービュー v-if="$route.meta.keepAlive"></ルータービュー>
    </キープアライブ>
    <ルータービュー v-if="!$route.meta.keepAlive"></ルータービュー>
  </div>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
  名前: 'keepAvliveTest'
}
</スクリプト>
<スタイル>
</スタイル>

keepcom1とkeepcom2コンポーネント間の切り替えを完了します。実行後の結果は次のとおりです。

ここに画像の説明を挿入

keepcom1はキャッシュを使用します。ページを切り替えると、前回追加した3つの要素が残ったまま、フック関数が実行されます。 Keepcom2 はキャッシュを使用しません。ページを切り替えると、前回追加した要素は存在しなくなり、初期状態に復元されます。そして、両方のフックは実行されません。

要約と注釈

キャッシュする必要があるページを設定するときは、コードの結合が少なくなるように、ルーターでメタ タグを使用することをお勧めします。 keep-alive は、まず、含まれているコンポーネントの名前フィールドと一致します。名前が利用できない場合は、現在のコンポーネントのコンポーネント構成に登録されている名前と一致します。キープアライブに含まれていますが、除外、アクティブ化、非アクティブ化の条件を満たしている場合は呼び出されません

上記は、vue フロントエンド開発における keepAlive の使用に関する詳細な説明の詳細な内容です。vue フロントエンドの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • Vue プロジェクトで keepAlive を使用する手順 (超実践版)
  • vue keepAlive キャッシュクリア問題事例の詳細な説明
  • Vue での keepAlive の使用例の詳細な説明
  • VueのkeepAliveコンポーネントの機能と使い方の詳細な説明
  • Vue で keepAlive を使用するときにキャッシュされない問題を解決する
  • Vue の keepAlive 設定が有効にならない場合の解決方法

<<:  Docker構成 Alibaba Cloud Container Serviceの操作

>>:  MySQL ストレステストツール Mysqlslap の使用

推薦する

Centos7 への mysql8.0rpm のインストール チュートリアル

まず、図をダウンロードしてください 1. まず、centos7に付属しているmariadbをアンイン...

より人気がありクリエイティブなダーク背景のウェブデザインの例

暗い背景スタイルのページ デザインは非常に人気があり、シックでエレガント、そして非常にクリエイティブ...

HTML テーブル マークアップ チュートリアル (4): 境界線の色属性 BORDERCOLOR

テーブルを美しくするために、テーブルにさまざまな境界線の色を設定できます。基本的な構文<テーブ...

つまり、フィルターコレクション

IE は開発の初期段階では頭を悩ませましたが、他のブラウザとは異なります。他のブラウザがサポートして...

Vueでaxiosをカプセル化する方法

目次1. インストール1. はじめに3. インターフェースルートアドレス4. 使用例4.1 ダウンロ...

MySQLのデフォルトのソートルールに基づく落とし穴

MySQL のデフォルトの varchar 型は大文字と小文字を区別しません (insensitiv...

HTML のタイトル、段落、改行、水平線、特殊文字についての簡単な説明

タイトルXML/HTML コードコンテンツをクリップボードにコピー< h1 >第 1 レ...

画像比較を実現するjQueryプラグイン

この記事の例では、画像比較を実現するためのjQueryプラグインの具体的なコードを参考までに共有して...

ネイティブ Js で実装されたシンプルなシームレス スクロール カルーセルのサンプル コード

シンプルなシームレススクロールカルーセルには多くの抜け穴があり、後から画像を追加するのは非常に不便で...

Docker を使用した ElasticSearch:7.8.0 クラスターのインストールに関する詳細なチュートリアル

ElasticSearch クラスターは、クラスターを構築するための動態請求的方式と靜態配置文件をサ...

MySQL のインストール方法と設定に関するいくつかの問題の概要

1. MySQL rpm パッケージのインストール # インストールソースをダウンロードします [r...

Vue は動的なプログレスバー効果を実現します

この記事では、動的なプログレスバー効果を実現するためのVueの具体的なコードを例として紹介します。具...

Struts2 ジャンプ後に CSS と JS が無効になる問題の解決策のアイデアと実装手順

struts2 アクションの実行後にジャンプした jsp が表示されると、css が機能しません。問...

LinuxサーバーにGRUBをインストールする手順

Linux サーバーに GRUB をインストールする方法クラウド移行ツールを使用して、CentOS ...

react-navigation6.xルーティングライブラリの基本的な使い方の詳しい説明

目次react-nativeプロジェクトの初期化react-nativeプロジェクトをインストールす...