Vue3 子组件如何抛出事件($emit 在 setup()、<script setup> 中使用)

简介: Vue3 子组件如何抛出事件($emit 在 setup()、<script setup> 中使用)
  • vue2$emit 抛出事件
<template>
  <!-- 点击事件 -->
  <button @click="touchButton">点击抛出事件</button>
</template>
<script>
export default {
  methods: {
    touchButton () {
      // 抛出 success 事件
      this.$emit('success', '自带参数(可选)')
    }
  }
}
</script>
  • Vue3setup () {}$emit 抛出事件
<template>
  <!-- 点击事件 -->
  <button @click="touchButton">点击抛出事件</button>
</template>
<script>
export default {
  setup (props ,context) {
    // 点击按钮
    function touchButton () {
      context.emit('success', '自带参数(可选)')
    }
    // 返回
    return {
      touchButton
    }
  }
}
</script>
  • Vue3<script setup>$emit 抛出事件
<template>
  <!-- 点击事件 -->
  <button @click="touchButton">点击抛出事件</button>
</template>
<script setup>
import { defineEmits } from 'vue'
const emits = defineEmits(['success'])
// 点击按钮
function touchButton () {
  emits('success', '自带参数(可选)')
}
</script>
  • 还有一种便捷写法,上面几种写法中都支持使用
<template>
  <!-- 点击事件 -->
  <button @click="$emit('success', '自带参数(可选)')">点击抛出事件</button>
</template>
<script>
export default {
}
</script>
相关文章
|
3天前
|
JavaScript
vue3- antd design vue 引入iconfont
vue3- antd design vue 引入iconfont
|
11天前
|
缓存 监控 UED
升级 Vue3 时,如何减少打包体积的增加?
升级 Vue3 时,如何减少打包体积的增加?
105 59
|
11天前
|
JavaScript
在vue3中(vite)引入unocss,安装配置unocss
在vue3中(vite)引入unocss,安装配置unocss
|
2天前
|
JavaScript 数据格式
vue3 + Ant design vue formItem 无法使用嵌套的form表单校验
vue3 + Ant design vue formItem 无法使用嵌套的form表单校验
16 1
|
前端开发 API
Vue3入门到精通-setup
Vue3入门到精通-setup
|
1天前
|
JavaScript 前端开发
vue尚品汇商城项目-day01【4.完成非路由组件Header与Footer业务】
vue尚品汇商城项目-day01【4.完成非路由组件Header与Footer业务】
9 2
|
1天前
|
JavaScript 前端开发
vue尚品汇商城项目-day01【3.项目路由的分析】
vue尚品汇商城项目-day01【3.项目路由的分析】
6 1
|
1天前
|
JavaScript 前端开发 数据安全/隐私保护
vue尚品汇商城项目-day01【5.路由组件的搭建】
vue尚品汇商城项目-day01【5.路由组件的搭建】
5 0
vue尚品汇商城项目-day01【5.路由组件的搭建】
|
2天前
|
JavaScript 索引
vue尚品汇商城项目-day04【25.面包屑处理关键字】
vue尚品汇商城项目-day04【25.面包屑处理关键字】
12 1
|
2天前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day04【28.详情页面Detail】
vue尚品汇商城项目-day04【28.详情页面Detail】
9 1