1. 動的コンポーネント<!DOCTYPE html> <html> <ヘッド> <メタ文字セット="utf-8"> <スタイル> #アプリ { フォントサイズ: 0 } .dynamic-component-demo-tab-button { パディング: 6px 10px; 左上の境界線の半径: 3px; 右上の境界線の半径: 3px; 境界線: 1px 実線 #ccc; カーソル: ポインタ; 下マージン: -1px; 右マージン: -1px; 背景: #f0f0f0; } .dynamic-component-demo-tab-button.dynamic-component-demo-active { 背景: #e0e0e0; } .dynamic-component-demo-tab-button:hover { 背景: #e0e0e0; } .dynamic-component-demo-posts-tab { ディスプレイ: フレックス; } .dynamic-component-demo-tab { フォントサイズ: 1rem; 境界線: 1px 実線 #ccc; パディング: 10px; } .dynamic-component-demo-posts-sidebar { 最大幅: 40vw; マージン: 0 !重要; パディング: 0 10px 0 0 !重要; リストスタイルタイプ: なし; 右境界線: 1px 実線 #ccc; 行の高さ: 1.6em; } .dynamic-component-demo-posts-sidebar li { 空白: ラップなし; テキストオーバーフロー: 省略記号; オーバーフロー: 非表示; カーソル: ポインタ; } .dynamic-component-demo-active { 背景: 水色; } .dynamic-component-demo-post-container { 左パディング: 10px; } .dynamic-component-demo-post > :first-child { 上マージン: 0 !重要; パディングトップ: 0 !重要; } </スタイル> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> </head> <本文> <div id="アプリ"> <button v-for="タブ内のタブ" class="dynamic-component-demo-tab-button" v-bind:class="{'dynamic-component-demo-active': タブ === currentTab}" @click="currentTab = tab">{{ tab }}</button> <キープアライブ> <コンポーネント v-bind:is="currentTabComponent"></コンポーネント> </キープアライブ> </div> <スクリプト> Vue.component('タブ投稿', { データ: 関数(){ 戻る { 投稿: {id: 1、タイトル: 「Cat Ipsum」、コンテンツ: 「嵐が過ぎ去るのを待ち続けます...」}、 {id: 2、タイトル: 'ヒップスター イプサム'、コンテンツ: 'ブッシュウィック ブルー ボトル シーンスター ...'}、 {id: 3、タイトル: 「カップケーキイプサム」、コンテンツ: 「アイシングデザートスフレ...」}、 ]、 選択された投稿: null } }, テンプレート: `<div class="dynamic-component-demo-posts-tab dynamic-component-demo-tab"> <ul class="ダイナミックコンポーネントデモ投稿サイドバー"> <li v-for="投稿内の投稿" v-bind:key="post.id" v-on:click="selectedPost = 投稿" v-bind:class="{'dynamic-component-demo-active': post===selectedPost}"> {{投稿.title}} </li> </ul> <div class="dynamic-component-demo-post-container"> <div v-if="選択された投稿" クラス="動的コンポーネントデモ投稿"> <h3>{{ 選択された投稿.タイトル }}</h3> <div v-html="選択された投稿.content"></div> </div> <strong v-else> 左側のブログタイトルをクリックすると表示されます。 </strong> </div> </div>` }); Vue.component('タブアーカイブ', { テンプレート: '<div class="dynamic-component-demo-tab">アーカイブ コンポーネント</div>' }); 新しいVue({ el: '#app', データ: { currentTab: '投稿', タブ: ['投稿', 'アーカイブ'] }, 計算: { 現在のタブコンポーネント: 関数(){ 'tab-' + this.currentTab.toLowerCase() を返す } } }); </スクリプト> </本文> </html> 動的コンポーネントでキープアライブを使用すると、コンポーネントが切り替えられたときにコンポーネントの状態を維持できるため、レンダリングの繰り返しによって発生するパフォーマンスの問題を回避できます。 2. 非同期コンポーネントVue では、コンポーネントをファクトリ関数として定義することができ、これによりコンポーネント定義が非同期的に解決されます。 Vue.component('async-example', 関数(resolve, deny) {}) ここでは、Vue.js のコンポーネントの基礎を復習できます。 非同期コンポーネントを導入するために、webpack にバンドルされた Vue プロジェクトを使用します。 <!-- HelloWorld.vue --> <テンプレート> <div> <h2 class="title">{{メッセージ}}</h2> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ データ () { 戻る { メッセージ: 'こんにちは、Vue!' } } } </スクリプト> <!-- CSS をこのコンポーネントのみに制限するために "scoped" 属性を追加します --> <スタイルスコープ> 。タイトル { パディング: 5px; 色: 白; 背景: グレー; } </スタイル> <!-- App.vue --> <テンプレート> <div id="アプリ"> <こんにちは世界/> </div> </テンプレート> <スクリプト> './components/HelloWorld' から HelloWorld をインポートします。 エクスポートデフォルト{ 名前: 'アプリ'、 コンポーネント: こんにちは世界 } } </スクリプト> <スタイル> </スタイル> App.vue の <script> タグの内容を次のように変更します。 エクスポートデフォルト{ 名前: 'アプリ'、 コンポーネント: HelloWorld: () => import('./components/HelloWorld') } } これは、App コンポーネントが HelloWorld コンポーネントを非同期的にロードする機能を実装します。 オンデマンドロードを実現できます。 <!-- App.vue --> <テンプレート> <div id="アプリ"> <button @click="show = true">ツールチップを読み込む</button> <div v-if="表示"> <こんにちは世界/> </div> </div> </テンプレート> <スクリプト> エクスポートデフォルト{ データ: () => ({ 表示:偽 })、 コンポーネント: HelloWorld: () => import('./components/HelloWorld') } } </スクリプト> <スタイル> </スタイル> ここでの非同期コンポーネント ファクトリ関数は、次の形式でオブジェクトを返すこともできます。 const AsyncComponent = () => ({ // ロードするコンポーネント(`Promise` オブジェクトである必要があります) コンポーネント: import('./MyComponent.vue'), //非同期コンポーネント読み込み時に使用されるコンポーネント読み込み: LoadingComponent、 // 読み込み失敗時に使用されるコンポーネント error: ErrorComponent, // ロード中のコンポーネントの遅延時間を表示します。デフォルト値は200(ミリ秒)です 遅延: 200、 // タイムアウトが指定されていてコンポーネントの読み込みがタイムアウトした場合、 // 読み込みに失敗した場合に使用したコンポーネントを使用します。デフォルト値は: `Infinity` タイムアウト: 3000 }) 参照:動的コンポーネントと非同期コンポーネント — Vue.js 上記は、Vue 動的コンポーネントと非同期コンポーネントの詳細な理解に関する内容です。Vue 動的コンポーネントと非同期コンポーネントの詳細については、123WORDPRESS.COM の他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
著者: Guan Changlong は、Aikesheng の配送サービス部門の DBA です。主...
目次1. import_tableの紹介2. データのロードとテーブル関数のインポートの例2.1 L...
目次1. React.FC<> 2. クラスxxはReact.Componentを拡張し...
CentOS6.9はMysql5.7をインストールします。参考までに、詳細は次のとおりです。 1. ...
最近私の記事を読んだ人なら誰でも、私が現在WeChatミニプログラムプロジェクトを担当しており、その...
目次1. コンポーネントの紹介2. コンポーネントの内部構造とロジック1. コード組織構造2. マッ...
ウェブサイトを見るというのは、実は美しい女性を評価するようなものです。見た目を見るとき、私たちは見た...
目次概要解決策 1: クロージャ解決策2: 構造を分割する解決策3:解決策4: setTimeout...
まず、setIntervalはフックとしてカプセル化されます👇 'react' から...
データシート:列から行へ: max(case when then) を使用max---集計関数は最大...
GitHub にはあらゆる種類の魔法のツールがあります。今日、私はデータベースを操作するためのコマン...
MySQL 5.7.13 Mac用インストールチュートリアル、非常に詳細で、以下のように記録されてい...
コードをコピーコードは次のとおりです。 <ヘッド> <meta http-equi...
1. SQLを実行して表示する @@session.sql_mode を選択します。 グローバルレベ...
Vue の紹介現在のビッグフロントエンドの時代は、混乱と衝突の時代です。世界は多くの派閥に分かれてお...