空色天絵 / NEO TOKYO NOIR 01
174 字
1 分钟
基于文件系统的自动路由(哈希)AutoRouter
获取pages目录结构动态构造路由
const req = require.context('@/pages', true, __AUTO_ROUTER_REG__, 'lazy')
路由组件都动态导入,路由的component 设置为Loadable({ loader, loading: Loading })
loading:自定义的加载提示组件loader的签名为
Promise<React.ComponentType<Props> | { default: React.ComponentType<Props> }>借助req可以轻松实现这一点() => Promise.resolve(req(key)) ,key 是req.keys() 的项。
Loadable 是一个高阶组件,它会返回一个新的组件,此组件内部会调用loader 加载异步导入的组件(import(xxx))。在加载完成前,会展示loading 对应的组件。
Loadable 来自'react-loadable' 库。
也可以使用React.lazy + Suspense 来实现:
// React 官方方案示例const LazyComponent = React.lazy(() => import('./HeavyComponent'));
function App() { return ( <Suspense fallback={<Loading />}> <LazyComponent /> </Suspense> );} 基于文件系统的自动路由(哈希)AutoRouter
https://fuwari.vercel.app/blog/posts/react/基于文件系统的自动路由哈希autorouter/