当前位置: 首页> 文旅> 文化 > 广东网站设计品牌设计_莱芜杂谈 莱芜话题_站内营销推广方案_企业培训心得体会

广东网站设计品牌设计_莱芜杂谈 莱芜话题_站内营销推广方案_企业培训心得体会

时间:2025/7/11 7:40:09来源:https://blog.csdn.net/SUNGUOGUO1/article/details/146401620 浏览次数:0次
广东网站设计品牌设计_莱芜杂谈 莱芜话题_站内营销推广方案_企业培训心得体会

emit 是 Vue 3 中用于子组件向父组件传递事件和数据的机制。它允许子组件触发一个自定义事件,父组件可以监听这个事件并执行相应的逻辑。


emit 的作用

  1. 子组件向父组件通信
    • 子组件通过 emit 触发一个自定义事件,父组件监听这个事件并执行相应的逻辑。
  2. 传递数据
    • 子组件可以通过 emit 向父组件传递数据,父组件可以在事件处理函数中接收这些数据。
  3. 解耦组件逻辑
    • 子组件不需要知道父组件的具体实现,只需要触发事件,父组件负责处理逻辑。

示例

以下是一个简单的例子,展示如何使用 emit

1. 子组件(ChildComponent.vue
<template><div><button @click="handleClick">点击我</button></div>
</template><script setup>
// 定义 emit
const emit = defineEmits(['custom-event']);// 点击按钮时触发自定义事件
const handleClick = () => {// 触发 custom-event 事件,并传递数据emit('custom-event', { message: 'Hello from ChildComponent!' });
};
</script>
2. 父组件(ParentComponent.vue
<template><div><ChildComponent @custom-event="handleCustomEvent" /><p>{{ message }}</p></div>
</template><script setup>
import { ref } from 'vue';
import ChildComponent from './ChildComponent.vue';const message = ref('');// 监听子组件触发的 custom-event 事件
const handleCustomEvent = (data) => {message.value = data.message;
};
</script>
3. 运行效果
  • 当用户点击子组件的按钮时,子组件会触发 custom-event 事件,并传递一个对象 { message: 'Hello from ChildComponent!' }
  • 父组件监听 custom-event 事件,接收到数据后更新 message,并在页面上显示。

父组件监听事件

在父组件中,可以通过 @ 监听子组件触发的事件:

<template><DeviceGroup@select="handleSelect"@menu-action="handleMenuAction"@sort-change="handleSortChange"@node-expand="handleNodeExpand"/>
</template><script setup>
const handleSelect = (data) => {console.log('Selected:', data);
};const handleMenuAction = (action) => {console.log('Menu Action:', action);
};const handleSortChange = (data) => {console.log('Sort Change:', data);
};const handleNodeExpand = (data) => {console.log('Node Expand:', data);
};
</script>

总结

  • emit 用于子组件向父组件传递事件和数据。
  • 通过 defineEmits 定义事件,emit 触发事件并传递数据。
  • 父组件通过 @ 监听事件,并执行相应的逻辑。
关键字:广东网站设计品牌设计_莱芜杂谈 莱芜话题_站内营销推广方案_企业培训心得体会

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: