global-state.ts 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /**
  2. * 全局复用的变量、组件、配置,各个模块之间共享
  3. * 通过单例模式实现,单例必须注意不受请求影响,例如用户信息这些需要根据请求获取的。后续如果有ssr需求,也不会影响
  4. */
  5. interface ComponentsState {
  6. [key: string]: any;
  7. }
  8. interface MessageState {
  9. copyPreferencesSuccess?: (title: string, content?: string) => void;
  10. }
  11. export interface IGlobalSharedState {
  12. components: ComponentsState;
  13. message: MessageState;
  14. }
  15. class GlobalShareState {
  16. #components: ComponentsState = {};
  17. #message: MessageState = {};
  18. /**
  19. * 定义框架内部各个场景的消息提示
  20. */
  21. public defineMessage({ copyPreferencesSuccess }: MessageState) {
  22. this.#message = {
  23. copyPreferencesSuccess,
  24. };
  25. }
  26. public getComponents(): ComponentsState {
  27. return this.#components;
  28. }
  29. public getMessage(): MessageState {
  30. return this.#message;
  31. }
  32. public setComponents(value: ComponentsState) {
  33. this.#components = value;
  34. }
  35. }
  36. export const globalShareState = new GlobalShareState();