c语言编程笔录

首页 >   > 笔记大全

笔记大全

Vue3中props和emit如何使用

更新时间:2023-09-12

props的使用

在Vue3中,props是用来接收组件的父组件传递过来的数据。Vue3中的props相比Vue2有一些改动,它是由"prop"新的函数API代替的。在Vue3中,我们可以使用defineComponent()来定义一个组件,并在组件的选项对象中使用props接收父组件传递的数据。

  
    import { defineComponent } from 'vue';

    export default defineComponent({
      props: {
        msg: {
          type: String,
          default: 'hello world'
        }
      },
      // 组件的其它选项
      ...
    });
  

在上面的props中,我们定义了一个msg属性,它的类型是string,默认值是"hello world"。如果父组件没有传递msg属性,则会使用默认值。如果父组件传递的msg属性不是字符串类型,则会在控制台中输出一条警告信息。

emit的使用

Vue3中的emit用来向父组件派发自定义事件。与props不同的是,我们不需要在组件的选项中显式地声明emit,而是通过emits选项数组来指定可以被派发的事件名称。在组件中使用$emit来派发事件,并传递数据给父组件。

  
    import { defineComponent } from 'vue';

    export default defineComponent({
      emits: ['my-event'],
      ...,
      methods: {
        handleClick() {
          const data = 'some data to pass to parent';
          this.$emit('my-event', data);
        }
      }
    });
  

在上面的代码中,我们通过emits选项数组声明了可供派发的事件名称为"my-event"。在组件中使用methods选项来定义处理函数,并在处理函数中使用$emit来向父组件派发my-event事件,并传递一些数据。

在子组件中使用props

在子组件中,我们可以通过props选项来接收父组件传递的数据,并进行相应的处理操作。下面是一个例子,展示了组件中如何使用props,并在模板中显示props数据:

  
    import { defineComponent } from 'vue';

    export default defineComponent({
      props: {
        msg: String
      },
      ...,
      template: `
        

{{msg}}

` });

在上面的代码中,我们在props选项中定义了一个msg属性,它的类型是string。在模板中,我们通过{{msg}}来显示msg属性的值。

在父组件中使用emit

在父组件中,我们可以通过在子组件中绑定自定义事件来监听子组件中使用$emit派发的事件,并执行相应的处理函数。下面是一个例子:

  
    

    
  

在上面的代码中,我们在父组件的模板中引入子组件,并绑定了一个名为"my-event"的自定义事件,当子组件中派发my-event事件时,会执行handleMyEvent方法,并接收从子组件传递过来的数据。