Vue コンポーネント通信: プロパティ バインディング通信には v-bind ディレクティブを使用します

WBOY
リリース: 2023-07-08 06:32:01
オリジナル
2009 人が閲覧しました

Vue コンポーネント通信: プロパティ バインディング通信には v-bind ディレクティブを使用します

Vue では、コンポーネントは Web アプリケーション構築の重要な部分です。そして、コンポーネント間の通信は非常に重要なトピックです。 Vue は、コンポーネント間の通信を実装するさまざまな方法を提供します。重要な方法の 1 つは、プロパティ バインディング通信に v-bind ディレクティブを使用することです。

v-bind ディレクティブを使用すると、親コンポーネントの子コンポーネントにデータを渡し、子コンポーネントの props 属性を通じてこのデータを受け取ることができます。このようにして、親コンポーネントと子コンポーネントの間でデータを転送および共有できます。

親コンポーネント App と子コンポーネント Child があり、親コンポーネントでプロパティを定義し、それを子コンポーネントに渡したいとします。

まず、親コンポーネント App でデータ属性メッセージを定義します。

<template>
  <div>
    <h1>父组件</h1>
    <input type="text" v-model="message">
    <child-component :text="message"></child-component>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  name: 'App',
  components: {
    ChildComponent
  },
  data() {
    return {
      message: ''
    };
  }
};
</script>
ログイン後にコピー

子コンポーネント Child では、props 属性を通じて渡された属性を受け取り、テンプレートに表示できます。

<template>
  <div>
    <h2>子组件</h2>
    <p>{{ text }}</p>
  </div>
</template>

<script>
export default {
  name: 'ChildComponent',
  props: {
    text: {
      type: String,
      required: true
    }
  }
};
</script>
ログイン後にコピー

上記のコードでは、v-bind ディレクティブを通じて、親コンポーネントの message 属性を子コンポーネントの text 属性に渡します。サブコンポーネントは、props 属性を通じて、受け取った属性タイプと必要な要件を定義します。次に、サブコンポーネントのテンプレートで、{{ text }} を使用して、受け取った属性値を表示できます。

親コンポーネントに情報を入力すると、子コンポーネントはリアルタイムで表示を更新します。これは、親コンポーネントのデータが変更され、v-bind ディレクティブが子コンポーネントの再レンダリングをトリガーし、最新のプロパティ値を子コンポーネントに渡すためです。

一方向の属性バインディングに加えて、双方向バインディングに v-bind ディレクティブを使用することもできます。これにより、子コンポーネントが親コンポーネントのプロパティ値を変更できるようになります。子コンポーネントでは、v-model ディレクティブを使用してローカル データをバインドし、$emit メソッドを通じてカスタム イベントをトリガーして、プロパティ値の変更を親コンポーネントに通知できます。

以下は双方向バインディングの例です:

<template>
  <div>
    <h1>父组件</h1>
    <input type="text" v-model="message">
    <child-component v-bind:text="message" @input="message = $event"></child-component>
  </div>
</template>

<script>
import ChildComponent from './ChildComponent.vue';

export default {
  name: 'App',
  components: {
    ChildComponent
  },
  data() {
    return {
      message: ''
    };
  }
};
</script>
ログイン後にコピー
<template>
  <div>
    <h2>子组件</h2>
    <input type="text" v-model="text" @input="$emit('input', text)">
  </div>
</template>

<script>
export default {
  name: 'ChildComponent',
  props: {
    text: {
      type: String,
      required: true
    }
  },
  data() {
    return {
      text: this.text
    };
  }
};
</script>
ログイン後にコピー

上記のコードでは、親コンポーネントの message 属性が v-bind ディレクティブを通じて子コンポーネントに渡されます。サブコンポーネントでは、受け取った属性が v-model ディレクティブを通じてローカル テキスト属性にバインドされ、入力ボックスで双方向のバインドが実行されます。入力ボックスの値が変更されると、子コンポーネントは $emit メソッドを通じて入力イベントをトリガーし、現在のテキスト属性値をパラメータとして親コンポーネントに渡します。親コンポーネントは @input を通じてカスタム イベントをリッスンし、イベント ハンドラーのメッセージ属性の値を更新します。

v-bind ディレクティブを介したプロパティ バインディング通信により、Vue コンポーネント間でデータを簡単に共有できます。これは非常に重要で、Vue で一般的に使用されるコンポーネント通信方法です。実際の開発では、特定のニーズやシナリオに応じて適切な通信方法を選択し、コンポーネント間の対話とデータ共有を実現できます。

以上がVue コンポーネント通信: プロパティ バインディング通信には v-bind ディレクティブを使用しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート