42 lines
1.0 KiB
TypeScript
42 lines
1.0 KiB
TypeScript
import { create } from "zustand";
|
|
|
|
type PublishData = {
|
|
game_type: string;
|
|
[key: string]: any;
|
|
}
|
|
|
|
interface PublishBallState {
|
|
// 待注入到发布页面的表单数据(支持单场或多场)
|
|
publishData: PublishData[] | null;
|
|
|
|
// 赋值/覆盖整份数据
|
|
setPublishData: (
|
|
data: PublishData[] | null
|
|
) => void;
|
|
|
|
// 读取当前数据
|
|
getPublishData: () => PublishData[] | null;
|
|
|
|
// 清空
|
|
clearPublishData: () => void;
|
|
}
|
|
|
|
export const usePublishBallStore = create<PublishBallState>()((set, get) => ({
|
|
publishData: null,
|
|
setPublishData: (data) => set({ publishData: data }),
|
|
getPublishData: () => get().publishData,
|
|
clearPublishData: () => set({ publishData: null }),
|
|
}));
|
|
|
|
// 便捷 hooks
|
|
export const usePublishBallData = () =>
|
|
usePublishBallStore((state) => state.publishData);
|
|
|
|
export const usePublishBallActions = () =>
|
|
usePublishBallStore((state) => ({
|
|
setPublishData: state.setPublishData,
|
|
clearPublishData: state.clearPublishData,
|
|
}));
|
|
|
|
|