ホームページ  >  記事  >  ウェブフロントエンド  >  Vue での props と $emit の使用法と違い

Vue での props と $emit の使用法と違い

WBOY
WBOYオリジナル
2023-07-17 13:57:071606ブラウズ

Vue における props と $emit の使用法と違い

Vue では、コンポーネント間の通信は非常に重要な概念です。 Vue は、コンポーネント間の通信を実装するために props と $emit という 2 つのメソッドを提供します。この記事では、props と $emit の使用法と違いを詳しく紹介し、コード例で説明します。

1. Props
Props は、親コンポーネントが子コンポーネントにデータを渡す方法です。親コンポーネントは、props を通じてあらゆる種類のデータを子コンポーネントに渡すことができ、子コンポーネントはこのデータを受信して​​使用できます。

1.1 親コンポーネントでプロパティを定義する

親コンポーネントでサブコンポーネントを使用する場合、サブコンポーネントのラベルに属性を追加することで、サブコンポーネントにデータを渡すことができます。例:

<template>
  <div>
    <!-- 使用子组件,并通过props传递数据 -->
    <ChildComponent :message="message"></ChildComponent>
  </div>
</template>

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

export default {
  components: {
    ChildComponent
  },
  data() {
    return {
      message: 'Hello Vue!'
    }
  }
}
</script>

この例では、ChildComponent タグに message という名前のプロパティを追加し、親コンポーネントの message 変数に値を設定することで、データを子コンポーネントに渡します。

1.2 子コンポーネントで props を受信する

子コンポーネントでは、props オプションを通じて親コンポーネントから渡されたデータを受信できます。例:

<template>
  <div>
    <!-- 子组件中使用props -->
    <p>{{ message }}</p>
  </div>
</template>

<script>
export default {
  props: {
    message: String
  }
}
</script>

この例では、props オプションを使用して message という名前のプロパティを定義し、その型を String として指定します。子コンポーネントは、message 属性を直接使用して、親コンポーネントから渡されたデータを取得できます。

2. $emit
$emit は、子コンポーネントが親コンポーネントにデータを渡す方法です。子コンポーネントは、$emit を通じてカスタム イベントをトリガーし、データを親コンポーネントに渡すことができます。

2.1 子コンポーネントでのイベントのトリガー

子コンポーネントでは、this.$emit を使用してカスタム イベントをトリガーし、データを親コンポーネントに渡すことができます。例:

<template>
  <div>
    <button @click="sendMessage">发送消息</button>
  </div>
</template>

<script>
export default {
  methods: {
    sendMessage() {
      // 通过$emit触发一个自定义事件,并向父组件传递数据
      this.$emit('message', 'Hello Vue!')
    }
  }
}
</script>

この例では、@click イベント リスナーをボタンに追加し、イベント ハンドラー関数で this.$emit を使用して message という名前のカスタム イベントをトリガーし、「Hello」という名前のデータを渡します。ビュー!

2.2 親コンポーネントでのイベントの受信

親コンポーネントでは、子コンポーネントのラベルに v-on を追加することで、子コンポーネントによってトリガーされたイベントをリッスンし、対応するイベントハンドラ関数 渡されたデータを受け取ります。例:

<template>
  <div>
    <!-- 监听子组件的自定义事件 -->
    <ChildComponent @message="onMessage"></ChildComponent>
  </div>
</template>

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

export default {
  components: {
    ChildComponent
  },
  methods: {
    onMessage(data) {
      // 在事件处理函数中接收子组件传递过来的数据
      console.log('收到消息:', data)
    }
  }
}
</script>

この例では、ChildComponent タグで v-on を使用して、子コンポーネントのカスタム イベント メッセージをリッスンし、onMessage イベント ハンドラーで子コンポーネントによって渡されたデータを受信します。

3. props と $emit の違い

Props と $emit はどちらもコンポーネント間の通信を実装するために使用されますが、その使用方法とアクションの方向には特定の違いがあります。

Props は、親コンポーネントがデータをサブコンポーネントに渡す方法です。データは属性の形式でサブコンポーネントに渡され、サブコンポーネントは props オプションを使用して、受け取る必要がある属性を宣言し、それらを使用できます。通常の属性と同様に、このデータを使用します。

$emit は、子コンポーネントが親コンポーネントにデータを渡す方法です。子コンポーネントは this.$emit を使用してカスタム イベントをトリガーし、データを親コンポーネントに渡し、v-on を渡すことができます。親コンポーネント。子コンポーネントによってトリガーされたイベントをリッスンし、対応するイベント ハンドラーでデータを受信します。

props のデータ フローは親コンポーネントから子コンポーネントへの一方向の流れであり、親コンポーネントは子コンポーネントにデータを渡します。 $emit のデータフローは子コンポーネントから親コンポーネントへの一方向の流れで、子コンポーネントはイベントをトリガーして親コンポーネントにデータを渡します。

概要:
props は、サブコンポーネントにデータを渡すために親コンポーネントによって使用されます。データは属性の形式でサブコンポーネントに渡され、サブコンポーネントは props オプションを通じてデータを受け取ります。
$emit は、親コンポーネントにデータを渡すために子コンポーネントによって使用されます。子コンポーネントは、this.$emit を通じてカスタム イベントをトリガーし、データを親コンポーネントに渡します。親コンポーネントは、 v-on を介して子コンポーネントを取得し、イベント ハンドラー関数でデータを受信します。

上記は、Vue における props と $emit の使い方と違いについて詳しく説明したもので、コンポーネント間の通信を理解するのに役立つことを願っています。

以上がVue での props と $emit の使用法と違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。