この記事では主に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を選択して使用する方法
ファイル名が少ないファイルを表示ファイル名を少なく | grep -n コンテンツを検索内容に応じて...
目次MySQL マスター スレーブ データベースが同期されない問題を解決する 2 つの方法1. 非同...
1.MySQLのバージョン [root@clq システム]# mysql -v MySQL モニター...
タイマー効果: <div> <font id='timeCount'...
ネットワーク データを読み込むときは、ユーザー エクスペリエンスを向上させるために、通常は円形の読み...
目次Jenkinsのインストールインストールポート番号を変更します(デフォルトのポートは8080です...
生活の中で、インターネットはどこにでもあります。インターネットを通じてゲームをしたり、テレビ番組を見...
1. MySQLをダウンロードする1. MySQLの公式ウェブサイトにログインし、64ビットシステム...
目次起源環境情報トラブルシューティングのプロセス要約する起源顧客は CentOS をベースにしたカス...
背景現在、会社のプロジェクトは、フロントエンドとバックエンドが分離された方法で開発されています。新し...
1. nginx はなぜ gzip を使用するのですか? 1. 圧縮の役割:ページがgzipで圧縮さ...
1. Dockerはローカルイメージをインポートする場合によっては、イメージをローカルまたは別の友人...
この記事では主に、Vue を使用してタブ ナビゲーション バーを実装し、flex レイアウトを使用し...
目次開始と停止データベース関連の操作データベーステーブル関連の操作制約関連デフォルトの制約高度なデー...
この記事では、MySQL 8.0.15をダウンロードしてインストールするための具体的な手順を参考まで...