mirror of
https://github.com/antebudimir/feishin.git
synced 2026-01-02 19:01:40 +00:00
37 lines
900 B
TypeScript
37 lines
900 B
TypeScript
|
|
import create from 'zustand';
|
||
|
|
import { devtools } from 'zustand/middleware';
|
||
|
|
import { immer } from 'zustand/middleware/immer';
|
||
|
|
|
||
|
|
export interface AlbumListDataState {
|
||
|
|
itemData: any[];
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface AlbumListDataSlice extends AlbumListDataState {
|
||
|
|
actions: {
|
||
|
|
setItemData: (data: any[]) => void;
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
export const useAlbumListDataStore = create<AlbumListDataSlice>()(
|
||
|
|
devtools(
|
||
|
|
immer((set) => ({
|
||
|
|
actions: {
|
||
|
|
setItemData: (data) => {
|
||
|
|
set((state) => {
|
||
|
|
state.itemData = data;
|
||
|
|
});
|
||
|
|
},
|
||
|
|
},
|
||
|
|
itemData: [],
|
||
|
|
})),
|
||
|
|
{ name: 'store_album_list_data' },
|
||
|
|
),
|
||
|
|
);
|
||
|
|
|
||
|
|
export const useAlbumListStoreActions = () => useAlbumListDataStore((state) => state.actions);
|
||
|
|
|
||
|
|
export const useAlbumListItemData = () =>
|
||
|
|
useAlbumListDataStore((state) => {
|
||
|
|
return { itemData: state.itemData, setItemData: state.actions.setItemData };
|
||
|
|
});
|