index.ts 983 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { ref } from 'vue'
  2. /**
  3. * @param callback 组件关闭时的回调
  4. * @returns
  5. */
  6. export function useComponent<T>(callback?: () => void) {
  7. // 组件名
  8. const componentId = ref<keyof T>();
  9. /**
  10. * 打开组件
  11. * @param componentName
  12. */
  13. const openComponent = (componentName: keyof T) => {
  14. if (componentName) {
  15. console.log('打开组件:' + componentName.toString());
  16. componentId.value = componentName;
  17. } else {
  18. console.error('无效的组件名');
  19. }
  20. }
  21. /**
  22. * 关闭组件
  23. * @param isCallback
  24. */
  25. const closeComponent = (isCallback?: boolean) => {
  26. console.log('关闭组件:' + componentId.value?.toString());
  27. componentId.value = undefined;
  28. // 是否刷新数据
  29. if (isCallback && callback) {
  30. callback();
  31. }
  32. }
  33. return {
  34. componentId,
  35. openComponent,
  36. closeComponent,
  37. }
  38. }