From 8db9a9429ee9b2a94babebaa7f0e0c70f427c558 Mon Sep 17 00:00:00 2001 From: zdl <3489966805@qq.com> Date: Sun, 26 Oct 2025 14:39:45 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E7=AE=A1=E7=90=86=E4=BB=8E=20URL=20=E9=A9=B1=E5=8A=A8?= =?UTF-8?q?=E5=88=B0=E6=9C=AC=E5=9C=B0=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除 getFiltersFromUrl 函数 - 添加 filters 本地状态(初始化时从 URL 读取) - 重命名 updateUrlParams 为 updateFilters - updateFilters 不再修改 URL,只更新本地状态 - 更新 loadEvents 使用本地 filters 依赖 - 移除 filterTags 中重复的 filters 声明 简化状态管理逻辑,避免 URL 和状态同步问题 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- src/views/Community/index.js | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/src/views/Community/index.js b/src/views/Community/index.js index 6176e9a8..8d727e57 100644 --- a/src/views/Community/index.js +++ b/src/views/Community/index.js @@ -120,8 +120,8 @@ const Community = () => { const [selectedEventForStock, setSelectedEventForStock] = useState(null); const [lastUpdateTime, setLastUpdateTime] = useState(new Date()); - // 从URL获取筛选参数 - const getFiltersFromUrl = useCallback(() => { + // 筛选参数状态 - 初始化时从URL读取,之后只用本地状态 + const [filters, setFilters] = useState(() => { return { sort: searchParams.get('sort') || 'new', importance: searchParams.get('importance') || 'all', @@ -132,27 +132,18 @@ const Community = () => { industry_code: searchParams.get('industry_code') || '', page: parseInt(searchParams.get('page') || '1', 10) }; - }, [searchParams]); + }); - // 更新URL参数 - const updateUrlParams = useCallback((params) => { - const newParams = new URLSearchParams(searchParams); - Object.entries(params).forEach(([key, value]) => { - if (value) { - newParams.set(key, value); - } else { - newParams.delete(key); - } - }); - setSearchParams(newParams); - }, [searchParams, setSearchParams]); + // 更新筛选参数 - 不再修改URL + const updateFilters = useCallback((newFilters) => { + setFilters(prev => ({ ...prev, ...newFilters })); + }, []); // 加载事件列表 const loadEvents = useCallback(async (page = 1) => { logger.debug('Community', 'loadEvents 被调用', { page }); setLoading(true); try { - const filters = getFiltersFromUrl(); const response = await eventService.getEvents({ ...filters, page, @@ -169,15 +160,14 @@ const Community = () => { setLastUpdateTime(new Date()); } } catch (error) { - // ❌ 移除 toast,仅 console 输出 logger.error('Community', 'loadEvents', error, { page, - filters: getFiltersFromUrl() + filters }); } finally { setLoading(false); } - }, [getFiltersFromUrl, pagination.pageSize]); // ✅ 移除 toast 依赖 + }, [filters, pagination.pageSize]); // 处理筛选变化 const handleFilterChange = useCallback((filterType, value) => { @@ -228,7 +218,6 @@ const Community = () => { }; // 获取筛选标签 - const filters = getFiltersFromUrl(); const filterTags = Object.entries(filters) .filter(([key, value]) => { if (key === 'industry_code') return !!value;