React 集成
本指南涵盖了将 @esmx/router 与 React 集成的全部内容。与 Vue 不同,React 不需要单独的集成包 —— 路由内置的微应用系统直接处理挂载、卸载和 SSR。
安装
只需安装核心路由包:
不需要额外的集成包。React 通过路由的 apps 回调工作,该回调提供 mount、unmount 和 renderToString 生命周期函数。
核心概念
React 集成使用微应用模式:
apps回调 — 告诉路由如何挂载、卸载和渲染你的 React 应用mount(el)— 创建 React 根节点并将应用渲染到 DOM 元素中unmount()— 卸载 React 根节点进行清理renderToString()— 将应用 SSR 为 HTML 字符串
路由将自身传递给 apps 回调,因此你的 React 组件可以通过 props 或 React context 访问它。
分步设置
1. 定义路由
路由是框架无关的 —— 与 Vue 相同:
src/routes.ts
2. 创建路由上下文
设置 React context,使任何组件都能访问路由:
src/router-context.tsx
3. 创建根组件
构建渲染匹配路由组件的应用根组件:
src/App.tsx
4. 创建 RouterLink 组件
使用 router.resolveLink() 构建导航链接组件:
src/components/RouterLink.tsx
5. 客户端入口
客户端入口使用 apps 回调创建路由,并使用 createRoot 进行挂载:
src/entry.client.tsx
apps 回调说明:
mount(el)— 当路由需要渲染应用时调用。在内部创建 React 根节点并渲染应用。unmount()— 当应用需要销毁时调用。卸载 React 根节点进行清理。renderToString()— 在服务端进行 SSR 时调用。返回 HTML 字符串。
6. 服务端入口(SSR)
src/entry.server.tsx
7. Node 入口
使用 @esmx/rspack-react 中的 createRspackReactApp 进行 React 专属的构建工具配置:
src/entry.node.ts
createRspackReactApp 配置了 Rspack,支持 JSX/TSX、React Refresh HMR 和 SSR 打包。
在组件中使用路由
导航
使用 useRouter hook 进行编程式导航:
src/pages/UserProfile.tsx
使用 RouterLink
src/layouts/MainLayout.tsx
访问路由信息
项目文件结构
典型的 React + SSR 项目结构(使用 @esmx/router):