This commit is contained in:
张成
2025-12-13 00:20:26 +08:00
parent e560d06106
commit 9f63a2369a
3 changed files with 159 additions and 47 deletions

View File

@@ -1,4 +1,5 @@
import { create } from "zustand";
import Taro from "@tarojs/taro";
import {
fetchUserProfile,
updateUserProfile,
@@ -44,14 +45,31 @@ export const useUser = create<UserState>()((set) => ({
const userData = res.data;
set({ user: userData });
// 当 userLastLocationProvince 更新时,同步更新 area
// 优先使用缓存中的城市,不使用用户信息中的位置
// 检查是否有缓存的城市
const CITY_CACHE_KEY = "USER_SELECTED_CITY";
const cachedCity = (Taro as any).getStorageSync?.(CITY_CACHE_KEY);
if (cachedCity && Array.isArray(cachedCity) && cachedCity.length === 2) {
// 如果有缓存的城市,使用缓存,不更新 area
console.log("[userStore] 检测到缓存的城市,使用缓存,不更新 area");
return userData;
}
// 只有当没有缓存时,才使用用户信息中的位置
if (userData?.last_location_province) {
const listStore = useListStore.getState();
const currentArea = listStore.area;
// 只有当 area 不存在或与 userLastLocationProvince 不一致时才更新
if (!currentArea || currentArea[1] !== userData.last_location_province) {
// 只有当 area 不存在时才使用用户信息中的位置
if (!currentArea) {
const newArea: [string, string] = ["中国", userData.last_location_province];
listStore.updateArea(newArea);
// 保存到缓存
try {
(Taro as any).setStorageSync?.(CITY_CACHE_KEY, newArea);
} catch (error) {
console.error("保存城市缓存失败:", error);
}
}
}