Home
avatar

.Demure

通用-el-Dialog的封装复用,状态的统一管理

在实际开发的时候,总会避免不了使用 el 的组件库里面的各种组件,尤其是很多表格图标都涉及到了 loading 和打开关闭状态。于是有了以下是封装的对话框状态,包括加载、打开、关闭、异步加载。

对话框管理 Composable

统一管理对话框的显示、隐藏和加载状态

import { ref } from "vue";

/**
 * 对话框管理 Composable
 * 统一管理对话框的显示、隐藏和加载状态
 */
export function useDialog() {
  const dialogVisible = ref(false);
  const loading = ref(false);

  /**
   * 打开对话框
   */
  const openDialog = () => {
    dialogVisible.value = true;
  };

  /**
   * 关闭对话框
   */
  const closeDialog = () => {
    dialogVisible.value = false;
    loading.value = false;
  };

  /**
   * 设置加载状态
   */
  const setLoading = (state: boolean) => {
    loading.value = state;
  };

  /**
   * 带加载状态的异步操作包装器
   */
  const withLoading = async <T>(asyncFn: () => Promise<T>): Promise<T> => {
    loading.value = true;
    try {
      return await asyncFn();
    } finally {
      loading.value = false;
    }
  };

  return {
    dialogVisible,
    loading,
    openDialog,
    closeDialog,
    setLoading,
    withLoading,
  };
}
Dialog 通用组件

喜欢这篇文章嘛,觉得文章不错的话,奖励奖励我!

支付宝打赏支付宝微信打赏 微信