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 の新機能とアプリケーション例

推薦する

MySQL インデックスの種類 (通常、ユニーク、フルテキスト) の説明

MySQL のインデックスの種類には、通常のインデックス、一意のインデックス、全文インデックスがあり...

nginx ip ブラックリストの動的禁止の例

ウェブサイトが悪意を持ってリクエストされた場合、IP アドレスをブラックリストに登録することは重要な...

MySQLサービスの自動停止の解決策

この記事では主に、MySQL サービスの自動停止の解決策を紹介し、参考と学習のために共有します。一緒...

DockerはRedisを起動し、パスワードを設定します

RedisはRedisバージョン5のapline(Alps)イメージを使用します。これは小さくて高速...

CSS セレクタのグループ化の簡単な分析

セレクタのグループ化h2 要素と段落の両方を灰色にしたいとします。これを行う最も簡単な方法は、次のス...

MySQL のテーブル内のレコード数を制限する方法

目次1. トリガーソリューション2. パーティションテーブルソリューション3. 一般的な表領域ソリュ...

Centos7 での mysql 8.0.15 のインストールと設定

この記事では、参考までにMySQL 8.0.15のインストールと設定のグラフィックチュートリアルを紹...

CSS で隠し要素を実現する 7 つの興味深い方法

序文非表示要素の 3 つの属性である表示、可視性、不透明度の類似点と相違点は、フロントエンドの就職面...

ウェブページ制作TDは隠し表示もオーバーフロー可能

おそらく、この記事にこのようなタイトルを付けると、誰かがこう尋ねるでしょう。「なぜまだテーブルに注目...

MySQLの外部ネットワークアクセス権を開く方法

以下のように表示されます。主に認証コマンドを実行します: 2つの方法1. 任意のホストがユーザー b...

React プロジェクトにおける axios カプセル化と API インターフェース管理の詳細な説明

目次序文インストール導入環境の切り替え傍受を要求するレスポンスインターセプションAPIの統合管理要約...

MySQL 5.7 以降のバージョンのダウンロードとインストールのグラフィック チュートリアル

1. ダウンロード1. MySQL公式サイトのダウンロードアドレス: https://downloa...

CSS導入方法4つのまとめ(共有)

1. インライン参照:ラベルに直接使用されるが、メンテナンスコストが高い スタイル='フォ...

Vue-pdfはPDFファイルのオンラインプレビューを実装します

序文ほとんどのプロジェクトでは、PDF ファイルのオンライン プレビューに遭遇するでしょう。このプロ...

CentOS 7にChromeブラウザをインストールする方法

この記事では、CentOS 7 に Chrome ブラウザをインストールする方法を紹介します。詳細は...