Vueコンポーネントの作成方法と使用方法を説明する記事

Vueコンポーネントの作成方法と使用方法を説明する記事

1. コンポーネントとは何ですか?

コンポーネントは、Vue.js の最も強力な機能の 1 つです。コンポーネントは HTML 要素を拡張して再利用可能なコードをカプセル化します。大まかに言えば、コンポーネントは Vue.js コンパイラが特別な機能を追加するカスタム要素です。

2. グローバルコンポーネントを作成する

方法1

1. Vue.extend

       var com1 = Vue.extend({
// テンプレートプロパティは、コンポーネントが表示する HTML 構造を指定します。テンプレート: '<h3>これは Vue.extend を使用して作成されたコンポーネントです</h3>'
            })

2. Vue.コンポーネント

Vue.component('コンポーネント名', 作成されたコンポーネントテンプレートオブジェクト)はコンポーネントを登録します

  Vue.component('myCom1', com1)

注意:Vue.Component を使用してグローバル コンポーネントを登録し、コンポーネント名がキャメル ケースである場合は、コンポーネントを参照するときに大文字のキャメル ケースを小文字に変更する必要があります。同時に、2 つの単語の間に「–」リンクを使用します。使用しない場合は、名前を直接使用してください。

ここに画像の説明を挿入

方法2

Vue.component を直接使用する

            Vue.component('mycom2', {
                テンプレート: '<div><h3>これは Vue.component を使用して直接作成されたコンポーネントです</h3>
<span>123</span></div>'
            })

例:

ここに画像の説明を挿入

方法3

1. 制御された #app の外部で、テンプレート要素を使用してコンポーネントの HTML テンプレート構造を定義します。

<テンプレートid="tmpl">
            <div>
                <h1>これはテンプレート要素を通じて外部的に定義されたコンポーネント構造です</h1>
                <h4>使いやすいです、良いです!</h4>
            </div>
        </テンプレート>

2. IDを使用してコンポーネントを登録する

   Vue.component('mycom3', {
        テンプレート: '#tmpl'
    })

3. ローカルコンポーネントの作成

ローカル コンポーネントは、グローバル コンポーネントと同じ方法で作成されます。唯一の違いは、部分コンポーネントが Vue インスタンス内で定義されることです。

ここに画像の説明を挿入

4. コンポーネント内のデータとメソッド

1. コンポーネントは独自のデータを持つことができます。

2. コンポーネント内のデータはインスタンス内のデータとは少し異なります。インスタンス内のデータはオブジェクトになる場合があります。ただし、コンポーネント内のデータはメソッドである必要があります。

3. コンポーネント内のデータは、メソッドであるだけでなく、オブジェクトを返す必要もあります。

4. コンポーネント内のデータは、インスタンス内のデータと同じように使用されます。 (方法についても同様です)

ここに画像の説明を挿入

5. コンポーネント間の通信

ここに画像の説明を挿入

props/$emit

親コンポーネント A は子コンポーネント B に props を渡し、B から A への処理はコンポーネント B の $emit とコンポーネント A の v-on によって実装されます。

サブコンポーネント:

<テンプレート>
  <div class="hello">
    <ul>
      <li v-for="(user,index) in users" v-bind:key="index">{{ user }}</li>
    </ul>
  </div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  名前: "ユーザー"、
  小道具: {
    users: { //親コンポーネント内の子タグのカスタマイズされた名前 type: Array,
      必要: true
    }
  }
}
</スクリプト>

<スタイルスコープ>
 li{
   リストスタイルの位置: 内側;
 }
</スタイル>

親コンポーネント:

<テンプレート>
  <div id="アプリ">
    <img alt="Vue ロゴ" src="./assets/logo.png">
    <Users v-bind:users="users"> </Users>
  </div>
</テンプレート>

<スクリプト>
「@/components/users」からユーザーをインポートします。
エクスポートデフォルト{
  名前: 'アプリ'、
  データ(){
    戻る {
      ユーザー: ['西安郵電'、'西安石油'、'西北政法'、'西安産業'、'西安金融']
    }
  },
  コンポーネント:
    ユーザーの皆様、
  }
}
</スクリプト>

イベント形式別

サブコンポーネント:

<テンプレート>
  <ヘッダー>
    <h1 @click="changeTitle">{{ タイトル }}</h1>
  </ヘッダー>
</テンプレート>
<スクリプト>
エクスポートデフォルト{
  名前:「息子」
  データ(){
    戻る {
      タイトル: 「Vue.js デモ」
    }
  },
  メソッド: {
    タイトルを変更する(){
      this.$emit('titleChanged','西安郵電大学');
    }
  }
}
</スクリプト>

<スタイルスコープ>
 h1{
   背景色: 緑黄色;
 }
</スタイル>

親コンポーネント:

<テンプレート>
  <div id="アプリ">
    <Son v-on:titleChanged="updateTitle"></Son>
    <h2>{{ タイトル }}</h2>
  </div>
</テンプレート>
<スクリプト>
Son を "@/components/Son" からインポートします。
エクスポートデフォルト{
  名前:「父」
  データ(){
    戻る {
      タイトル: 「渡されるのは値です」
    }
  },
  メソッド: {
    タイトルを更新(e){
      this.title = e
    }
  },
  コンポーネント:{
    息子、
  }
}
</スクリプト>

要約する

子コンポーネントはイベントを通じて親コンポーネントにメッセージを送信します。これは実際には、子コンポーネントが独自のデータを親コンポーネントに送信することを意味します。

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • Vueでコンポーネントを動的に作成する2つの方法
  • Vueコンポーネントを作成する3つの方法のまとめ
  • Vueコンポーネントの作成と公開方法の詳細な説明
  • Vueコンポーネントで値を作成して渡す方法
  • Vue の新しい組み込みコンポーネントの使用方法の詳細な説明

<<:  Bootstrap が人気な 11 の理由

>>:  HTML 5.1 学習: 14 の新機能とアプリケーション例

推薦する

mysql5.7.21.zip インストールチュートリアル

mysql5.7.21 zipの詳細なインストール手順は次のとおりです。 1. 解凍して指定されたデ...

IDEA 構成の Tomcat 起動エラーの問題を解決する

異なるサーブレット パスを構成するときに、次の 2 つのエラーが発生しました。 java.lang....

Linux での chmod コマンドの使用方法の詳細な説明

chmod コマンド構文chmod コマンドを使用する場合の正しい構文は次のとおりです。 chmod...

SQL グループ化により重複を削除し、他のフィールドで並べ替える

必要:あるフィールドの同一項目を結合し、別の時間フィールドで並べ替えます。例:初めに テーブルから都...

MySQL データテーブルのパーティション戦略と利点と欠点の分析

目次なぜパーティションが必要なのでしょうか?パーティショニング戦略パーティションの危険性なぜパーティ...

HTML でさまざまなスペースの特徴と表現を探る (推奨)

I. 概要HTML テンプレートを作成するときに、テキスト レイアウトの手段としてスペースが使用さ...

MySQL 面接の質問: ハッシュ インデックスの設定方法

B-Tree インデックスに加えて、MySQL は次のインデックスも提供します。ハッシュインデックス...

MySQL コマンドライン操作中のエンコードの問題の詳細な説明

1. MySQLデータベースのエンコーディングを確認する mysql -u ユーザー名 -p パスワ...

要素 DateTimePicker+vue ポップアップボックスに時間のみが表示される問題を解決する

3つの知識ポイント: 1. CSS子孫セレクターhttps://www.w3school.com.c...

MySQLとElasticsearch間のデータ非対称性問題の解決策

MySQLとElasticsearch間のデータ非対称性問題の解決策jdbc-input-plugi...

dockerコンテナは直接実行され、pingを介してパブリックIP操作を取得します。

コンテナを通じてローカル パブリック IP アドレスを取得します。ローカル IP アドレスを使用して...

docker に nacos をインストールしてデータベースを構成する詳細なチュートリアル

環境の準備 Docker環境 MySQL 5.7 (公式イメージはmysql8をサポートしていません...

nginx で HSTS を有効にしてブラウザを HTTPS アクセスにリダイレクトする方法の詳細な説明

前回の記事では、https を使用したローカルノードサービスアクセスを実装しました。前回の記事の効果...

HTML マルチヘッダーテーブルコード

1. マルチヘッダーテーブルコードコードをコピーコードは次のとおりです。 <!DOCTYPE ...

速度、読み込み、Web アプリケーションなどにおける div と table の違い。

1: 速度と読み込み方法の違いdivとtableの違いは速度ではなく、読み込み方法です。速度はネット...