MID/src/utils/treeStorage.ts

50 lines
1.4 KiB
TypeScript
Raw Normal View History

2026-02-06 14:07:11 +08:00
// 树形数据 localStorage 管理模块
// 注意:使用 any 类型避免循环依赖问题
export type TreeNode = any
const STORAGE_KEY = 'app-tree-data'
// 从 localStorage 获取数据
export const getTreeDataFromStorage = (): TreeNode[] | null => {
try {
const data = localStorage.getItem(STORAGE_KEY)
if (data) {
return JSON.parse(data)
}
} catch (error) {
console.error('Error reading from localStorage:', error)
}
return null
}
// 保存数据到 localStorage
export const saveTreeDataToStorage = (data: TreeNode[]) => {
try {
localStorage.setItem(STORAGE_KEY, JSON.stringify(data))
} catch (error) {
console.error('Error saving to localStorage:', error)
}
}
// 清空 localStorage 中的数据
export const clearTreeDataFromStorage = () => {
try {
localStorage.removeItem(STORAGE_KEY)
} catch (error) {
console.error('Error clearing localStorage:', error)
}
}
// 初始化数据:如果有 localStorage 数据则使用,否则使用 mockData 并保存
export const initializeTreeData = (mockData: TreeNode[]): TreeNode[] => {
const storedData = getTreeDataFromStorage()
if (storedData) {
console.log('Loaded tree data from localStorage')
return storedData
}
// 首次加载,保存 mockData 到 localStorage
saveTreeDataToStorage(mockData)
console.log('Initialized tree data with mock data and saved to localStorage')
return mockData
}