state.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. /**
  2. *公共数据
  3. */
  4. import { initGlobalState } from 'qiankun';
  5. import { store } from '/@/store';
  6. import { router } from '/@/router';
  7. import { getToken } from '/@/utils/auth';
  8. let actions;
  9. //定义传入子应用的数据
  10. export function getProps() {
  11. return {
  12. data: {
  13. publicPath: '/',
  14. token: getToken(),
  15. store: store,
  16. router,
  17. isMounted: false,
  18. },
  19. actions: getActions(),
  20. };
  21. }
  22. /**
  23. * 定义全局状态,并返回通信方法,在主应用使用,微应用通过 props 获取通信方法。
  24. * @param state 主应用穿的公共数据
  25. */
  26. export function initGlState(
  27. info: any = { token: '', userInfo: {}, isMounted: false, locationObj: null, locationId: '', pageObj: null, widthScale: 1, heightScale: 1 }
  28. ) {
  29. if (actions) return;
  30. // 初始化state
  31. actions = initGlobalState(info);
  32. // 设置新的值
  33. actions.setGlobalState({
  34. token: getToken(),
  35. isMounted: false,
  36. pageObj: {},
  37. widthScale: 1,
  38. heightScale: 1,
  39. url: {},
  40. });
  41. // 注册 观察者 函数 - 响应 globalState 变化,在 globalState 发生改变时触发该 观察者 函数。
  42. actions.onGlobalStateChange((newState, prev) => {
  43. // state: 变更后的状态; prev 变更前的状态
  44. console.info('newState', newState);
  45. console.info('prev', prev);
  46. for (const key in newState) {
  47. console.info('onGlobalStateChange', key);
  48. }
  49. });
  50. }
  51. export function getActions() {
  52. if (!actions) initGlState();
  53. return actions;
  54. }