uniapp vue3 fireevent 的使用方法是什么

在uniapp中使用vue3时,如何正确使用fireevent方法?我尝试按照文档操作但触发不了自定义事件,能否提供一个具体的使用示例?需要传递参数的情况下该怎么处理?求大佬指点!

2 回复

在uniapp中,fireEvent用于触发自定义事件。用法:

// 发送事件
uni.$emit('eventName', data)

// 监听事件
uni.$on('eventName', callback)

// 移除监听
uni.$off('eventName')

注意:uniapp中实际使用uni.$emit而非fireEvent,这是跨页面通信的常用方法。


在 UniApp 中使用 Vue 3 时,fireEvent 通常用于自定义事件触发,但 Vue 3 推荐使用 emits 选项和 emit 方法替代传统的事件触发方式。以下是具体使用方法:

1. 组件定义时声明 emits

在子组件中,通过 emits 选项声明自定义事件:

// 子组件 Child.vue
<script setup>
// 声明自定义事件
const emit = defineEmits(['myEvent', 'submit']);

const handleClick = () => {
  // 触发自定义事件,可传递参数
  emit('myEvent', { data: '示例数据' });
};
</script>

<template>
  <button @click="handleClick">触发事件</button>
</template>

2. 父组件监听事件

在父组件中通过 v-on@ 监听子组件触发的事件:

// 父组件 Parent.vue
<template>
  <Child @my-event="handleCustomEvent" />
</template>

<script setup>
const handleCustomEvent = (payload) => {
  console.log('接收到数据:', payload.data); // 输出:示例数据
};
</script>

注意事项:

  • 命名规范:自定义事件名建议使用 kebab-case(如 my-event),在模板中更符合 HTML 规范。
  • 参数传递emit('事件名', 参数1, 参数2) 可传递多个参数。
  • 替代方案:UniApp 中如需跨页面通信,可使用 uni.$emituni.$on(需在 main.js 中挂载到全局)。

示例场景:

// 子组件发送事件
emit('value-change', newValue);

// 父组件接收
<Child @value-change="updateValue" />

通过这种方式,可以清晰管理组件间通信,符合 Vue 3 的组合式 API 规范。

回到顶部