Skip to content

Commit b02c342

Browse files
committed
docs: update README to enhance clarity on routing features and add new useRouteData hook example; remove deprecated prefetch strategies and streamline Link component usage
1 parent 343d2a5 commit b02c342

File tree

2 files changed

+43
-39
lines changed

2 files changed

+43
-39
lines changed

README.md

Lines changed: 43 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@ WinJS 框架的 React 渲染器,提供客户端渲染能力和 React Router
1111
- 📦 **TypeScript 支持** - 完整的类型定义
1212
- 🎨 **应用上下文** - 通过 Context 访问路由和应用数据
1313
-**懒加载** - 内置代码分割和懒加载支持
14-
- 🔗 **智能预加载** - Link 组件支持多种预加载策略
15-
- 🌊 **流式渲染** - 支持 React 18 的 Suspense 流式渲染
14+
- 🔗 **路由预加载** - 支持程序化路由预加载
15+
- 🌊 **流式渲染** - 支持 React Suspense 流式渲染
1616

1717
## 安装
1818

@@ -187,6 +187,19 @@ function UserPage() {
187187

188188
> 已废弃,请使用 `useLoaderData()`
189189
190+
#### `useRouteData()`
191+
192+
获取当前路由的上下文数据:
193+
194+
```tsx
195+
import { useRouteData } from '@winner-fed/renderer-react';
196+
197+
function MyComponent() {
198+
const { route } = useRouteData();
199+
return <div>当前路由 ID: {route.id}</div>;
200+
}
201+
```
202+
190203
#### `useRouteProps()`
191204

192205
获取当前路由的属性(不包括 element):
@@ -217,34 +230,16 @@ function Breadcrumb() {
217230

218231
#### `<Link>`
219232

220-
带预加载功能的路由链接组件
233+
路由链接组件(从 react-router 导出)
221234

222235
```tsx
223236
import { Link } from '@winner-fed/renderer-react';
224237

225-
// 基础用法
226238
<Link to="/about">关于我们</Link>
227-
228-
// 鼠标悬停时预加载(默认 50ms 延迟)
229-
<Link to="/user" prefetch="intent">用户页面</Link>
230-
231-
// 渲染时立即预加载
232-
<Link to="/dashboard" prefetch="render">控制台</Link>
233-
234-
// 进入视口时预加载
235-
<Link to="/products" prefetch="viewport">产品列表</Link>
236-
237-
// 自定义预加载延迟
238-
<Link to="/settings" prefetch="intent" prefetchTimeout={200}>设置</Link>
239+
<Link to="/user/123">用户页面</Link>
240+
<Link to="/settings" state={{ from: 'home' }}>设置</Link>
239241
```
240242

241-
**预加载策略:**
242-
243-
- `intent` - 鼠标悬停时预加载(默认 50ms 延迟)
244-
- `render` - 组件渲染时立即预加载
245-
- `viewport` - 链接进入视口时预加载(提前 100px)
246-
- `none` - 不预加载
247-
248243
#### `withRouter(Component)`
249244

250245
为类组件注入路由相关的 props:
@@ -276,7 +271,7 @@ export default withRouter(MyComponent);
276271

277272
### React Router 导出
278273

279-
直接从 `react-router-dom` 重新导出的常用 API:
274+
直接从 `react-router` 重新导出的常用 API:
280275

281276
```tsx
282277
import {
@@ -292,6 +287,7 @@ import {
292287
useRoutes,
293288

294289
// 组件
290+
Link,
295291
Navigate,
296292
NavLink,
297293
Outlet,
@@ -588,14 +584,15 @@ function Navigation() {
588584

589585
// 程序化预加载
590586
const handleHover = () => {
591-
preloadRoute('/dashboard');
587+
if (preloadRoute) {
588+
preloadRoute('/dashboard');
589+
}
592590
};
593591

594592
return (
595593
<nav>
596-
{/* 声明式预加载 */}
597-
<Link to="/home" prefetch="intent">首页</Link>
598-
<Link to="/products" prefetch="viewport">产品</Link>
594+
<Link to="/home">首页</Link>
595+
<Link to="/products">产品</Link>
599596

600597
{/* 程序化预加载 */}
601598
<button onMouseEnter={handleHover}>控制台</button>
@@ -626,14 +623,14 @@ function Navigation() {
626623
- 使用 `useCallback` 避免不必要的函数重建
627624
- clientLoader 数据全局缓存,避免重复加载
628625
- 支持流式渲染(useStream),提升首屏加载速度
629-
- 路由预加载支持,减少页面切换延迟
626+
- 通过 preloadRoute 支持程序化路由预加载
630627

631-
## 与其他包的关系
628+
## 依赖关系
632629

633-
- **@winner-fed/preset-react**:为 WinJS 提供 React 支持,会自动设置渲染器路径为此包
634-
- **@winner-fed/core**:通过插件管理器与核心系统集成
635-
- **react-router**:基于 React Router v7 构建,重新导出其核心 API
630+
- **react** / **react-dom**:需要 React 19.0.0 或更高版本
631+
- **react-router**:使用 React Router v7 进行路由管理
636632
- **history**:使用 History v5,支持多种路由模式(Browser/Hash/Memory)
633+
- **@winner-fed/winjs**:与 WinJS 插件系统集成
637634

638635
## 常见问题
639636

@@ -696,12 +693,20 @@ renderClient({
696693
});
697694
```
698695

699-
### 5. Link 预加载何时触发?
696+
### 5. 如何实现路由预加载?
697+
698+
使用 `useAppData``preloadRoute` 方法:
700699

701-
- `intent`:鼠标悬停 50ms 后触发(可通过 `prefetchTimeout` 自定义)
702-
- `render`:组件挂载时立即触发
703-
- `viewport`:链接进入视口(提前 100px)时触发
704-
- `none`:不预加载
700+
```tsx
701+
const { preloadRoute } = useAppData();
702+
703+
// 在鼠标悬停时预加载
704+
const handleHover = () => {
705+
if (preloadRoute) {
706+
preloadRoute('/target-path');
707+
}
708+
};
709+
```
705710

706711
## 许可证
707712

src/index.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,4 @@ export {
3434
export { __getRoot, renderClient } from './browser.js';
3535
export { useRouteData } from './routeContext.js';
3636
export type { ClientLoader } from './types.js';
37-
export { __useFetcher } from './useFetcher.js';
3837
export { type RouteComponentProps, withRouter } from './withRouter.js';

0 commit comments

Comments
 (0)