fix: mitt v3 on() 返回 void,改用 off() 取消订阅
This commit is contained in:
@@ -89,26 +89,33 @@ watch(activeGameId, () => {
|
|||||||
/** 首次加载 */
|
/** 首次加载 */
|
||||||
fetchRoomList()
|
fetchRoomList()
|
||||||
|
|
||||||
// ===== SSE 实时事件订阅 =====
|
// ===== SSE 实时事件订阅处理函数 =====
|
||||||
onMounted(() => {
|
/** 新房间创建 → 添加到列表头部 */
|
||||||
const offs = [
|
function onRoomCreated(room: RoomItem) {
|
||||||
// 新房间创建 → 添加到列表头部
|
|
||||||
sseBus.on('room_created', (room: RoomItem) => {
|
|
||||||
rooms.value.unshift(room)
|
rooms.value.unshift(room)
|
||||||
}),
|
}
|
||||||
// 房间状态更新 → 局部替换
|
/** 房间状态更新 → 局部替换 */
|
||||||
sseBus.on('room_updated', (room: RoomItem) => {
|
function onRoomUpdated(room: RoomItem) {
|
||||||
const idx = rooms.value.findIndex((r) => r.id === room.id)
|
const idx = rooms.value.findIndex((r) => r.id === room.id)
|
||||||
if (idx >= 0) {
|
if (idx >= 0) {
|
||||||
rooms.value[idx] = room
|
rooms.value[idx] = room
|
||||||
}
|
}
|
||||||
}),
|
}
|
||||||
// 房间移除 → 从列表中删除
|
/** 房间移除 → 从列表中删除 */
|
||||||
sseBus.on('room_removed', ({ roomId }: { roomId: string }) => {
|
function onRoomRemoved({ roomId }: { roomId: string }) {
|
||||||
rooms.value = rooms.value.filter((r) => r.id !== roomId)
|
rooms.value = rooms.value.filter((r) => r.id !== roomId)
|
||||||
|
}
|
||||||
|
|
||||||
|
// ===== SSE 实时事件订阅 =====
|
||||||
|
onMounted(() => {
|
||||||
|
sseBus.on('room_created', onRoomCreated)
|
||||||
|
sseBus.on('room_updated', onRoomUpdated)
|
||||||
|
sseBus.on('room_removed', onRoomRemoved)
|
||||||
})
|
})
|
||||||
]
|
onUnmounted(() => {
|
||||||
onUnmounted(() => offs.forEach((fn) => fn()))
|
sseBus.off('room_created', onRoomCreated)
|
||||||
|
sseBus.off('room_updated', onRoomUpdated)
|
||||||
|
sseBus.off('room_removed', onRoomRemoved)
|
||||||
})
|
})
|
||||||
|
|
||||||
/** 筛选后的房间列表 */
|
/** 筛选后的房间列表 */
|
||||||
|
|||||||
Reference in New Issue
Block a user