From 4c5262441c04b2f89dfede12fb22fda8ce2b8373 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=88=90?= Date: Fri, 12 Dec 2025 11:56:41 +0800 Subject: [PATCH] 1 --- src/main_pages/components/ListPageContent.tsx | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/main_pages/components/ListPageContent.tsx b/src/main_pages/components/ListPageContent.tsx index 3a8528f..d6e3181 100644 --- a/src/main_pages/components/ListPageContent.tsx +++ b/src/main_pages/components/ListPageContent.tsx @@ -214,6 +214,38 @@ const ListPageContent: React.FC = ({ } }, [isActive]); + // 记录上一次的城市,用于检测城市变化 + const prevAreaRef = useRef<[string, string] | null>(null); + + // 监听城市变化,重新获取行政区列表并清空已选择的行政区 + useEffect(() => { + if (area && area.length >= 2) { + const currentProvince = area[1]; + const prevProvince = prevAreaRef.current?.[1]; + + // 只有当城市真正改变时才执行(避免初始化时也触发) + if (prevProvince && prevProvince !== currentProvince) { + console.log("城市改变,重新获取行政区列表:", { + prevProvince, + currentProvince, + }); + // 城市改变时,重新获取行政区列表 + getDistricts(); + // 清空已选择的行政区,避免显示错误的行政区 + const currentState = useListStore.getState(); + const currentPageState = currentState.isSearchResult + ? currentState.searchPageState + : currentState.listPageState; + if (currentPageState?.distanceQuickFilter?.district) { + updateDistanceQuickFilter({ district: undefined }); + } + } + // 更新记录的城市 + prevAreaRef.current = area as [string, string]; + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [area?.[1]]); // 只监听省份(area[1])的变化 + // 当页面从非激活状态切换为激活状态时,检查城市是否变化,如果变化则重新加载数据 useEffect(() => { // 如果从非激活状态变为激活状态(切回列表页)