在前端单页面应用中,子页面的代码都是当用户访问到的时候,才会异步去加载子页面的代码。
如果子页面代码较大,那么会给用户一段时间的卡顿感,很影响使用体验。
所以,我们想在加载子页面代码时,显示 loading 组件,从而优化体验。
在 Umi 中,可以通过简单的配置,即可实现。
import React, { useEffect } from 'react'
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
function PageLoading() {
useEffect(() => {
const progress = NProgress.start();
return () => {
progress.done();
}
}, [])
return<></>
}
export default PageLoading
2.配置config
import { defineConfig } from 'umi';
export default defineConfig({
dynamicImport: {
loading:'@/components/PageLoading'
},
nodeModulesTransform: {
type: 'none',
},
antd: false,
mock: false,
hash: true,
proxy: {
'/ssp-api/': {
target: '====',
changeOrigin: true,
ws: false,
},
},
});
3.配置完毕,等 umi 热加载完成后,回到页面,切换路由,就可以看到 loading 效果了