优化事件总线

This commit is contained in:
zqm
2025-12-15 09:03:32 +08:00
parent 7d92e0b6b1
commit 4ca836df37
7 changed files with 237 additions and 157 deletions

View File

@@ -14,6 +14,7 @@
<script setup lang="ts">
import { ref, computed, onMounted, onUnmounted } from 'vue'
import { emitEvent, EVENT_TYPES } from './eventBus.js'
// Props定义
interface Props {
@@ -39,7 +40,7 @@ interface Emits {
resizeEnd: []
}
const emit = defineEmits<Emits>()
// 使用事件总线替代直接emit
// 响应式状态
const isHovered = ref(false)
@@ -79,7 +80,7 @@ const startResize = (event: MouseEvent) => {
startX.value = event.clientX
startY.value = event.clientY
emit('resizeStart')
emitEvent(EVENT_TYPES.RESIZE_START, { direction: props.direction, targetId: props.targetId })
// 添加全局鼠标事件监听
document.addEventListener('mousemove', handleMouseMove)
@@ -112,7 +113,7 @@ const handleMouseMove = (event: MouseEvent) => {
if (newSize !== currentSize.value) {
currentSize.value = newSize
emit('resize', newSize)
emitEvent(EVENT_TYPES.RESIZE_MOVE, { direction: props.direction, targetId: props.targetId, newSize })
}
startX.value = event.clientX
@@ -122,7 +123,7 @@ const handleMouseMove = (event: MouseEvent) => {
// 结束调整大小
const endResize = () => {
isResizing.value = false
emit('resizeEnd')
emitEvent(EVENT_TYPES.RESIZE_END, { direction: props.direction, targetId: props.targetId })
// 移除全局鼠标事件监听
document.removeEventListener('mousemove', handleMouseMove)