42 lines
945 B
TypeScript
42 lines
945 B
TypeScript
import {create} from 'zustand/react'
|
|
|
|
export const useDataStore = create<{
|
|
data: Record<string, any>,
|
|
getData: () => Record<string, any>,
|
|
setData: (data: Record<string, any>) => void,
|
|
getDataById: (id: string) => any,
|
|
setDataById: (id: string, data: any) => void,
|
|
mergeDataById: (id: string, data: any) => void,
|
|
removeDataById: (id: string) => void,
|
|
}>((set, get) => ({
|
|
data: {},
|
|
getData: () => get().data,
|
|
setData: (data) => set({
|
|
data: data,
|
|
}),
|
|
getDataById: id => get().data[id],
|
|
setDataById: (id, data) => {
|
|
let updateData = get().data
|
|
updateData[id] = data
|
|
set({
|
|
data: updateData,
|
|
})
|
|
},
|
|
mergeDataById: (id, data) => {
|
|
let updateData = get().data
|
|
updateData[id] = {
|
|
...(updateData[id] ?? {}),
|
|
...data,
|
|
}
|
|
set({
|
|
data: updateData,
|
|
})
|
|
},
|
|
removeDataById: (id) => {
|
|
let data = get().data
|
|
delete data[id]
|
|
set({
|
|
data,
|
|
})
|
|
},
|
|
})) |