この記事では主にVueにおけるコンポーネントの切り替えとキャッシュソリューションについて紹介します 1. コンポーネント切り替え方式方法1: v-ifとv-elseを使用する// 変数フラグが true の場合、comp-a コンポーネントが表示され、そうでない場合は comp-b コンポーネントが表示されます <comp-a v-if="flag"></comp-a> <comp-b v-else></comp-b> 方法 2: 組み込みコンポーネントを使用する: <component></component>// クリックするとログイン、登録、終了コンポーネントが切り替わります <template> <div> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click.prevent="comName = 'login'">ログイン</a> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click.prevent="comName = 'register'">登録</a> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click.prevent="comName = 'logOut'">ログアウト</a> // <component></component> は対応する名前のコンポーネントを表示します。これはプレースホルダーに相当します // :is 属性はコンポーネント名を指定します <component :is="comName"></component> </div> </テンプレート> 方法3: vue-router// ルーティングルール: { パス: '/login', 名前: 'ログイン', コンポーネント: () => import('../views/login.vue') }, { パス: '/register', 名前: 'レジスタ', コンポーネント: () => import('../views/register.vue') }, //コンポーネントを表示する場所: <ルータービュー /> 2. コンポーネントのキャッシュ: キープアライブこの記事の冒頭の実際のシナリオのように、コンポーネントを破棄して再構築するのではなく、必要に応じてコンポーネントをキャッシュします。 1.キープアライブの定義
<keep-alive> は抽象コンポーネントです。DOM要素自体はレンダリングされず、親コンポーネント チェーンにも表示されません。 2.キープアライブライフサイクル活性化された
無効化 このフックは
キャッシュが設定されているコンポーネント:
3. キープアライブの使い方1. 小道具
2. <component></component> で使用する<テンプレート> <div> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click.prevent="comName = 'login'">ログイン</a> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click.prevent="comName = 'register'">登録</a> <a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" @click.prevent="comName = 'logOut'">ログアウト</a> // ログイン コンポーネントがキャッシュされます。include が設定されていない場合、<component></component> にマウントされているすべてのコンポーネントがデフォルトでキャッシュされます。// 指定された複数のコンポーネントをキャッシュします include = ['login', 'register'] <キープアライブを含める="ログイン"> <コンポーネント:is="comName"></コンポーネント> </キープアライブ> </div> </テンプレート> 3. <router-view /> ルーティングで使用するルーティング { パス: '/login', 名前: 'ログイン', コンポーネント: () => import('../views/login.vue') メタ:{ keepAlive : true // ログインコンポーネントはキャッシュされます} }, { パス: '/register', 名前: 'レジスタ', コンポーネント: () => import('../views/register.vue'), メタ:{ keepAlive : false // レジスタコンポーネントはキャッシュされません} }, <ルータービュー />: <div id="アプリ"> <キープアライブ> <!-- キャッシュする必要があるコンポーネントを表示します--> <router-view v-if="$route.meta.keepAlive"> </router-view> </キープアライブ> <!-- キャッシュを必要としないコンポーネントを表示します --> <router-view v-if="!$route.meta.keepAlive"> </router-view> </div> 4. キャッシュコンポーネントをクリアする// beforeRouteLeave() フック // 詳細ページに移動するかどうかを決定する beforeRouteLeave(to, from, next) { to.path === "/goods_detail"の場合{ メタキープアライブ = true; } それ以外 { from.meta.keepAlive = false; // this.$destroy() } 次(); } これで、vue コンポーネントの切り替え、動的コンポーネント、コンポーネントのキャッシュに関するこの記事は終了です。vue コンポーネントの切り替え、動的コンポーネント、コンポーネントのキャッシュに関するより関連性の高いコンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: ウェブ画像形式としてPNG、JPG、GIFを選択して使用する方法
目次1. はじめに2. 本文2.1 フィールドの連結2.2 フィールドでの算術計算の実行1. はじめ...
・【シーン説明】 HTTP1.1 以降、HTTP プロトコルは永続的な接続 (長い接続とも呼ばれます...
この記事の例では、VueがPCカメラを呼び出して写真機能を実現する具体的なコードを参考までに共有して...
なぜこのような効果を実現するのでしょうか。実は、この効果もタイトルプロンプトから派生したものですが、...
ウェブページ上の画像が一般的に jpg、gif、png 形式であることは誰もが知っています。それらの...
実稼働環境で Docker を使用する場合、多くの場合、データを複数のコンテナ間で永続化または共有す...
SELECT ステートメントの完全な構文は次のとおりです。 (7)選択 (8) DISTINCT ...
たとえば、イントラネットに Jenkins サーバーがある場合、そのサーバーにアクセスするには、その...
このチュートリアルの動作環境: Windows 7 システム、vue 2.9.6 バージョン、DEL...
土曜日、本番サーバー上の Redis サーバーが利用できなくなり、エラー メッセージは次のようになり...
まず、VirtualBox仮想マシンのネットワーク設定モードについて説明します。NAT+ホストオンリ...
この記事では、スキン変更効果を実現するためのJavaScriptの具体的なコードを参考までに紹介しま...
目次背景問題分析1. 属性値はJson形式であり、Json操作関数を使用して処理する必要があります。...
各 Web ページには、URL () で識別されるアドレスがあります。通常、Web サイト内でリンク...
最近、Tencent Cloudを使用してサーバーを設定しました。使用中に、tomcatポートにアク...