174 字
1 分钟
基于文件系统的自动路由(哈希)AutoRouter
2025-11-10

获取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))keyreq.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/
作者
Byte.n
发布于
2025-11-10
许可协议
CC BY-NC-SA 4.0