修复切换城市挡住的问题

This commit is contained in:
张成
2025-11-09 23:21:44 +08:00
parent df875feaec
commit 9801968af2
3 changed files with 22 additions and 7 deletions

View File

@@ -18,6 +18,7 @@ interface IProps {
iconPath?: string;
leftIconClick?: () => void;
};
onCityPickerVisibleChange?: (visible: boolean) => void; // 城市选择器显示/隐藏回调
}
function CityPicker(props) {
@@ -49,13 +50,18 @@ function CityPicker(props) {
}
const ListHeader = (props: IProps) => {
const { config } = props;
const { config, onCityPickerVisibleChange } = props;
const { showInput = false, inputLeftIcon, leftIconClick } = config || {};
const { getLocationLoading, statusNavbarHeightInfo } = useGlobalState();
const { gamesNum, searchValue, cities, area, updateArea, getMatchesData, fetchGetGamesCount, refreshBothLists } = useListState();
const { navBarHeight } = statusNavbarHeightInfo;
const [cityPopupVisible, setCityPopupVisible] = useState(false);
// 监听城市选择器状态变化,通知父组件
useEffect(() => {
onCityPickerVisibleChange?.(cityPopupVisible);
}, [cityPopupVisible, onCityPickerVisibleChange]);
const userInfo = useUserInfo();
const province = (userInfo as any)?.province || "";

View File

@@ -75,6 +75,7 @@ const ListPage = () => {
const [guideBarZIndex, setGuideBarZIndex] = useState<'low' | 'high'>('high');
const [isPublishMenuVisible, setIsPublishMenuVisible] = useState(false);
const [isDistanceFilterVisible, setIsDistanceFilterVisible] = useState(false);
const [isCityPickerVisible, setIsCityPickerVisible] = useState(false);
// 处理 PublishMenu 显示/隐藏
const handlePublishMenuVisibleChange = useCallback((visible: boolean) => {
@@ -86,19 +87,24 @@ const ListPage = () => {
setIsDistanceFilterVisible(visible);
}, []);
// 监听筛选相关组件和发布菜单的状态,动态调整 GuideBar 的 z-index
// 处理 CityPicker 显示/隐藏
const handleCityPickerVisibleChange = useCallback((visible: boolean) => {
setIsCityPickerVisible(visible);
}, []);
// 监听所有弹窗和菜单的状态,动态调整 GuideBar 的 z-index
useEffect(() => {
if (isPublishMenuVisible) {
// PublishMenu 展开时GuideBar 保持高层级
setGuideBarZIndex('high');
} else if (isShowFilterPopup || isDistanceFilterVisible) {
// 任何筛选组件展开时GuideBar 降低层级
} else if (isShowFilterPopup || isDistanceFilterVisible || isCityPickerVisible) {
// 任何筛选组件或选择器展开时GuideBar 降低层级
setGuideBarZIndex('low');
} else {
// 都关闭时GuideBar 保持高层级
setGuideBarZIndex('high');
}
}, [isShowFilterPopup, isPublishMenuVisible, isDistanceFilterVisible]);
}, [isShowFilterPopup, isPublishMenuVisible, isDistanceFilterVisible, isCityPickerVisible]);
// ScrollView 滚动处理函数
const handleScrollViewScroll = useCallback(
@@ -425,6 +431,7 @@ const ListPage = () => {
config={{
showInput: isShowInputCustomerNavBar,
}}
onCityPickerVisibleChange={handleCityPickerVisibleChange}
/>
{area_city !== "上海" ? (
renderCityQrcode()