重构SidebarMenu组件,移除不必要的useEffect,优化消息列表和联系人组件的加载逻辑,合并样式文件以提升代码可读性和维护性。

This commit is contained in:
超级老白兔
2025-10-23 20:42:29 +08:00
parent 8941b87e03
commit 3b82908e8a
8 changed files with 296 additions and 203 deletions

View File

@@ -15,6 +15,7 @@ export const useMessageStore = create<MessageState>()(
refreshing: false,
refreshTrigger: 0,
lastRefreshTime: null,
hasLoadedOnce: false,
setLoading: (loading: boolean) => set({ loading }),
setRefreshing: (refreshing: boolean) => set({ refreshing }),
@@ -23,6 +24,14 @@ export const useMessageStore = create<MessageState>()(
refreshTrigger: get().refreshTrigger + 1,
lastRefreshTime: new Date().toISOString(),
}),
setHasLoadedOnce: (loaded: boolean) => set({ hasLoadedOnce: loaded }),
resetLoadState: () =>
set({
hasLoadedOnce: false,
loading: false,
refreshing: false,
refreshTrigger: 0,
}),
// ==================== 保留原有接口(向后兼容) ====================
messageList: [],
@@ -42,6 +51,7 @@ export const useMessageStore = create<MessageState>()(
partialize: state => ({
// 只持久化必要的状态,不持久化数据
lastRefreshTime: state.lastRefreshTime,
hasLoadedOnce: state.hasLoadedOnce,
// 保留原有持久化字段(向后兼容)
messageList: [],
currentMessage: null,
@@ -99,3 +109,15 @@ export const setRefreshing = (refreshing: boolean) =>
* 触发刷新(通知组件重新查询数据库)
*/
export const triggerRefresh = () => useMessageStore.getState().triggerRefresh();
/**
* 设置已加载标识
* @param loaded 是否已加载
*/
export const setHasLoadedOnce = (loaded: boolean) =>
useMessageStore.getState().setHasLoadedOnce(loaded);
/**
* 重置加载状态(用于登出或切换用户)
*/
export const resetLoadState = () => useMessageStore.getState().resetLoadState();