vue3 ts 基于 nProgress 的钩子分享,需要的自取
不废话,直接上代码!
安装包
pnpm install nprogress @types/nprogress
钩子分享
import {ref} from "vue";
import * as nProgress from "nprogress";
import 'nprogress/nprogress.css'
nProgress.configure({
showSpinner: false
})
/**
* 加载状态钩子
* @param defaultLoadingStatus 默认加载状态,默认为假
* @param enableNProgress 是否开启nProgress对应功能,默认开启
*/
export function useLoadingHook(defaultLoadingStatus: boolean = false, enableNProgress: boolean = true) {
/**
* 加载状态
*/
const loadingStatus = ref<boolean>(defaultLoadingStatus);
/**
* 显示加载状态
*/
function showLoading() {
loadingStatus.value = true;
if (enableNProgress) nProgress.start();
}
/**
* 隐藏加载状态
* @param force 是否前强制结束 nProgress 动画
*/
function hideLoading(force = true) {
loadingStatus.value = false;
if (enableNProgress) nProgress.done(force);
}
/**
* 包括对应方法
*/
return {
showLoading,
hideLoading,
loadingStatus
}
}