diff --git a/src/services/socketService.js b/src/services/socketService.js index 74e1bb28..42c879e0 100644 --- a/src/services/socketService.js +++ b/src/services/socketService.js @@ -92,9 +92,18 @@ class SocketService { // 监听连接错误 this.socket.on('connect_error', (error) => { this.reconnectAttempts++; - logger.error('socketService', 'connect_error', error, { - attempts: this.reconnectAttempts, - }); + + // 首次连接失败使用 warn 级别,后续使用 debug 级别减少日志噪音 + if (this.reconnectAttempts === 1) { + logger.warn('socketService', `Socket 连接失败,将在后台重试`, { + url: API_BASE_URL, + error: error.message, + }); + } else { + logger.debug('socketService', `Socket 重连尝试 #${this.reconnectAttempts}`, { + error: error.message, + }); + } // 使用指数退避策略安排下次重连 this.scheduleReconnection(); diff --git a/src/utils/axiosConfig.js b/src/utils/axiosConfig.js index 945fecdd..8da13245 100644 --- a/src/utils/axiosConfig.js +++ b/src/utils/axiosConfig.js @@ -52,6 +52,11 @@ axios.interceptors.response.use( return response; }, (error) => { + // 忽略取消请求的错误(组件卸载时正常行为) + if (error.name === 'CanceledError' || axios.isCancel(error)) { + return Promise.reject(error); + } + const method = error.config?.method?.toUpperCase() || 'UNKNOWN'; const url = error.config?.url || 'UNKNOWN'; const requestData = error.config?.data || error.config?.params || null; diff --git a/src/views/Community/hooks/useEventData.js b/src/views/Community/hooks/useEventData.js index 84da1c52..175d9cc2 100644 --- a/src/views/Community/hooks/useEventData.js +++ b/src/views/Community/hooks/useEventData.js @@ -52,18 +52,21 @@ export const useEventData = (filters, pageSize = 10) => { total: response.data?.pagination?.total }); - if (response.success) { - setEvents(response.data.events); + if (response.success && response.data) { + const events = response.data.events || []; + const paginationData = response.data.pagination || {}; + + setEvents(events); setPagination({ - current: response.data.pagination.page, - pageSize: response.data.pagination.per_page, - total: response.data.pagination.total + current: paginationData.page || page, + pageSize: paginationData.per_page || pagination.pageSize, + total: paginationData.total || 0 }); setLastUpdateTime(new Date()); logger.debug('useEventData', 'loadEvents 成功', { - count: response.data.events.length, - total: response.data.pagination.total + count: events.length, + total: paginationData.total || 0 }); } } catch (error) {