50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
// 树形数据 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
|
|
} |