优化事件总线
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user