vue3.x中emits的基本用法实例

yizhihongxing

下面是详细讲解Vue3.x中emits的基本用法实例的攻略,包含两个示例说明。

Vue3.x中emits的基本用法实例

什么是emits?

emits是Vue3新引入的一个选项,它用于为自定义组件声明触发的自定义事件。在Vue3中,$emit方法被移到了组件实例的emits属性中,因此emits属性的主要作用就是声明自定义事件,为自定义组件提供了非常好的解耦和复用性。

如何使用emits?

在组件定义中,我们可以在options中声明emits属性:

import { defineComponent } from 'vue'

export default defineComponent({
  emits: ['custom-event'],
  // ...
})

在上面代码中,我们声明了自定义事件名'custom-event'

当然,我们也可以使用对象来声明多个事件:

import { defineComponent } from 'vue'

export default defineComponent({
  emits: {
    'custom-event': (arg1, arg2) => {
      if (arg1 === 'foo') {
        return true
      } else {
        return new Error('arg1不是foo')
      }
    },
    'another-custom-event': null
  },
  // ...
})

在上面代码中,我们声明了两个自定义事件名:'custom-event''another-custom-event'

示例1:Custom Button

接下来,我们来看一个例子。假设我们需要一个CustomButton组件,它有两个按钮,分别是确认取消,我们可以为组件声明两个自定义事件名:'confirm''cancel',当用户点击这两个按钮时,分别触发这两个自定义事件。

首先,我们需要在组件中声明emits属性,来声明自定义事件名:

import { defineComponent } from 'vue'

export default defineComponent({
  emits: ['confirm', 'cancel'],
  // ...
})

接下来,我们需要在template中使用这两个按钮:

<template>
  <div>
    <button @click="$emit('confirm')">确认</button>
    <button @click="$emit('cancel')">取消</button>
  </div>
</template>

在上面代码中,我们使用了$emit方法,来分别触发两个自定义事件。

最后,我们可以在父组件中使用这个CustomButton组件,并监听相应的自定义事件:

<template>
  <custom-button @confirm="onConfirm" @cancel="onCancel"/>
</template>

<script>
import CustomButton from '@/components/CustomButton.vue';

export default {
  components: {
    CustomButton,
  },
  methods: {
    onConfirm() {
      console.log('确认');
    },
    onCancel() {
      console.log('取消');
    },
  },
};
</script>

在上面代码中,我们监听了confirmcancel两个自定义事件,并在相应的回调函数中输出了相应的信息。

示例2:Custom Input

接下来,我们再介绍一个CustomInput组件的例子。假设我们需要一个CustomInput组件,它可以接受用户输入,并将输入的值保存在组件内部的状态中,同时还声明了change事件,当用户输入内容发生变化时,会触发此自定义事件。

首先,我们需要在组件中声明emits属性,来声明自定义事件名:

import { defineComponent } from 'vue'

export default defineComponent({
  emits: ['change'],
  // ...
})

接着,在template中使用v-model,并在输入框的input事件中触发change事件:

<template>
  <div>
    <input type="text" v-model="value" @input="$emit('change', value)">
  </div>
</template>

在上面代码中,我们使用了v-model来绑定组件内部状态中的value变量,同时在输入框的input事件中触发了change自定义事件,参数为当前的输入框值value

最后,我们可以在父组件中使用这个CustomInput组件,并监听相应的自定义事件:

<template>
  <custom-input @change="onChange" />
</template>

<script>
import CustomInput from '@/components/CustomInput.vue';

export default {
  components: {
    CustomInput,
  },
  methods: {
    onChange(value) {
      console.log('输入框的值变更为:'+value);
    },
  },
};
</script>

在上面代码中,我们监听了change自定义事件,并在回调函数中输出了相应的信息。

这就是Vue3.x中emits的基本用法实例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue3.x中emits的基本用法实例 - Python技术站

(1)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • 详解Vue组件之作用域插槽

    当我们使用Vue构建前端应用时,尤其是当我们需要扩展组件功能时,Vue组件是不可避免的。Vue的组件化系统使用了所谓的作用域插槽(scope slots)以让组件的扩展更加灵活和强大。在本文中,我们将会讨论Vue的作用域插槽。 什么是作用域插槽? 作用域插槽是Vue组件中最强大的特性之一,它让父组件可以在子组件的视图中插入内容,并访问子组件的内部数据。尤其是…

    Vue 2023年5月27日
    00
  • 从零开始实现Vue简单的Toast插件

    让我们开始讲解“从零开始实现Vue简单的Toast插件”的完整攻略。 1. 确定插件的功能和结构 在进行插件开发之前,我们需要确定Toast插件的基本功能以及它的结构。一般来说,Toast插件应该能够在页面上显示一条简短的提示信息,比如操作成功或者失败。根据这个要求,我们可以定义一个名为VueToast的插件,并且将它的HTML结构定义如下: <div…

    Vue 2023年5月28日
    00
  • vue中使用js-xlsx导出excel的实现方法

    当需要在Vue中生成Excel文件时,可以使用js-xlsx库来实现。下面是具体步骤: 步骤一:安装依赖 在终端中输入以下命令安装js-xlsx依赖: npm install xlsx 步骤二:导入依赖 在需要使用js-xlsx的组件上方,引入js-xlsx: import xlsx from ‘xlsx’ 步骤三:生成excel数据 在需要生成excel的…

    Vue 2023年5月27日
    00
  • 详解Vue 中 extend 、component 、mixins 、extends 的区别

    让我详细讲解一下“详解Vue 中 extend 、component 、mixins 、extends 的区别”。 extend extend是Vue实例的一个方法,在使用时需要首先通过调用该方法来创建一个构造函数,然后通过该构造函数来创建Vue实例。 示例: // 创建一个名为MyComponent的构造函数 const MyComponent = Vue…

    Vue 2023年5月28日
    00
  • Vue 中 createElement 使用实例详解

    下面我给出“Vue 中createElement 使用实例详解”的完整攻略,包括基本语法和两条示例说明。 What is createElement? createElement 是 Vue 的一个渲染函数,它通过 JavaScript 代码的方式生成虚拟 DOM。通过 createElement 我们能够在 JS 代码中定义 Vue 的组件,从而实现动态渲…

    Vue 2023年5月29日
    00
  • Vue.js在数组中插入重复数据的实现代码

    在Vue.js中,要向数组中插入数据需要使用Vue.set或者.splice方法,而如果需要插入重复数据,可通过以下实现代码: // 定义一个空数组 let arr = []; // 添加第一个元素 arr.push(1); // 添加第二个元素,即重复元素 Vue.set(arr, 1, 1); 上述代码中,我们首先定义了一个空数组arr,并向其中添加了一…

    Vue 2023年5月29日
    00
  • vue el-date-picker动态限制时间范围案例详解

    针对这个主题,我将会给出完整的攻略,包含以下内容: 背景介绍 准备工作 解决方案说明 编码实现 示例说明 总结 背景介绍 在日常开发中,经常会遇到需要限制用户选择日期时间的情况,特别是时间范围的限制。vue el-date-picker是一个常用的日期时间选择器,本文将重点介绍如何使用该插件动态限制时间范围。 准备工作 在开始编写代码之前,需要先安装vue、…

    Vue 2023年5月28日
    00
  • Vue路由router详解

    Vue路由router详解 什么是路由 路由指的是根据不同的URL地址展示不同的页面内容,Vue Router是Vue.js官方的路由管理器。使用Vue Router可以很方便地实现单页面应用程序(SPA)中的多视图管理。 安装 安装Vue Router很简单,在Vue CLI中提供了预设的脚手架模板供使用者选择,其中就包括了Vue Router功能。 步骤…

    Vue 2023年5月29日
    00
合作推广
合作推广
分享本页
返回顶部