序文keep-alive は Vue の組み込みコンポーネントです。動的コンポーネントをラップすると、非アクティブなコンポーネント インスタンスを破棄するのではなくキャッシュします。 コンポーネントの切り替え中、状態はメモリ内に保持され、DOM レンダリングの繰り返しを防ぎ、読み込み時間とパフォーマンスの消費を削減し、ユーザー エクスペリエンスを向上させます。使い方 <キープアライブ> <コンポーネント /> </キープアライブ> ここのコンポーネントはキャッシュされます。 keep-avlive フック関数keep-alive で作成されたコンポーネントには、activated と deactivated という 2 つのライフサイクル フックが追加されます。 activated: キープアライブコンポーネントがアクティブ化されたときに呼び出されます。キープアライブはデータをメモリ内に保持します。ページに入るたびに最新のデータを取得したい場合は、元の create フック関数でデータを取得するタスクを引き受け、アクティブ化された段階でデータを取得する必要があります。 keep-avliveはどのコンポーネントをキャッシュするかkeep-avlive でコンポーネントをキャッシュする方法は 2 つあります。1 つは、keep-avlive コンポーネントによって提供される include および exclude プロパティを使用して、キャッシュ用のパラメータを通じて対応するコンポーネントを一致させる方法です。もう 1 つは、ルートに meta 属性を設定する方法です。 /* 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 つのフック関数を同時に使用してテストします。ここでは、ルーティング メタを使用してキャッシュ コンポーネントの設定を実装します。 <テンプレート> <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 のコードは基本的に同じで、ページにノードを追加します。 <テンプレート> <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 の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: Docker構成 Alibaba Cloud Container Serviceの操作
>>: MySQL ストレステストツール Mysqlslap の使用
目次Axios リクエストQs処理データ分析Vantアップロードファイル形式完全なコードこの記事では...
実稼働環境で Docker を使用する場合、多くの場合、データを複数のコンテナ間で永続化または共有す...
昨年、プロジェクトの必要性により、Python でクローラーを作成しました。クロールされたデータは、...
序文この記事では、Linux で Squid プロキシ サーバーを設定することに関する関連コンテンツ...
Alibaba Cloud サーバーを購入した後、新しいインスタンスが正常に動作できるようにするには...
Tensorflow バージョンと Cuda および CUDNN の対応: https://tens...
起源最近、私は要件 A に取り組んでいます。そこには、次のように記述される小さな機能ポイントがありま...
この記事の例では、チャットインターフェースの表示を実現するためのVueの具体的なコードを参考までに共...
現在の需要:グループとファクターの 2 つのテーブルがあります。1 つのグループは複数のファクターに...
elementUI が提供する el-select コンポーネントのスタイルを変更する方法この問題...
次のような初期コードがあると仮定します。 <!DOCTYPE html> <htm...
データベースのパフォーマンスに関する話面接では、「データベースにどのくらい精通していますか?」など、...
序文Linux のスケジュールされたタスクを実装する方法としては、cron、anacron、at な...
はじめに: この記事ではreact-native-cliで作成したサンプル プロジェクト (Andr...
背景データ ウェアハウス モデリングでは、何ら処理されていない元のビジネス レイヤー データは OD...