c语言编程笔录

首页 >   > 笔记大全

笔记大全

Vue3中props和emit怎么使用

更新时间:2023-07-31
前言: 在 Vue3 中,props 用于接收父组件传递的数据,而 emit 用于触发子组件向父组件传递数据的事件。本文将介绍在 Vue3 中如何使用 props 和 emit。 使用 props: 在 Vue3 中,可以通过组件选项 props 来注册接收的属性。props 的值可以是一个数组或对象。数组中可以指定要接收的属性名称,对象中可以指定属性名称和类型。下面是一个示例:

注册接收的属性

// 子组件代码
props: ['message']

在上述示例中,子组件通过 props: ['message'] 注册了一个接收的属性 message,然后在组件中就可以通过 this.message 来访问该属性了。

除了数组外,还可以使用对象来注册属性,并指定属性的类型。这样可以在使用属性时进行类型检查。以下是一个示例:

使用对象注册属性

// 子组件代码
props: {
  count: Number,
  title: {
    type: String,
    required: true
  }
}

在上述示例中,子组件通过对象的方式注册了两个属性:count 和 title。其中 count 属性的类型为 Number,title 属性的类型为 String,且必须传递的属性(required: true)。

使用 emit: 在 Vue3 中,可以使用 emit 方法来触发子组件向父组件传递数据的事件。emit 方法接受两个参数,第一个参数是要触发的事件名称,第二个参数是要传递的数据。以下是一个示例:

触发事件传递数据

// 子组件代码
methods: {
  handleClick() {
    this.$emit('update:title', '新的标题');
  }
}

在上述示例中,子组件通过 this.$emit('update:title', '新的标题') 语句触发了一个名为 update:title 的事件,并传递了一个新的标题。父组件可以监听这个事件,并在事件处理函数中接收传递的数据。

父组件监听子组件事件

// 父组件代码
<ChildComponent @update:title="handleUpdateTitle" />

// 父组件事件处理函数
methods: {
  handleUpdateTitle(newTitle) {
    console.log(newTitle);
  }
}

在上述示例中,父组件通过 @update:title="handleUpdateTitle" 在组件上监听了 update:title 事件,并将事件处理函数指定为 handleUpdateTitle。当子组件触发 update:title 事件时,父组件的 handleUpdateTitle 方法将会被调用,并接收到传递的新标题。

总结: 在 Vue3 中,我们可以使用 props 接收父组件传递的数据,可以使用数组或对象来注册属性,并可以指定属性的类型和是否必须。而使用 emit 方法可以触发子组件向父组件传递数据的事件,父组件可以通过监听事件来接收传递的数据。这样能够方便地实现组件间的数据通信。