# Prefetch
`prefetch` 函数用于预取远程模块的资源和**数据**,从而提升应用的性能和用户体验。通过在用户访问某个功能之前提前加载所需内容,可以显著减少等待时间。
{props.prefetchTip || React.createElement(PrefetchTip)}
## 何时使用
当你希望在不立即渲染组件的情况下,提前加载其关联的 JavaScript、CSS 或数据时,`prefetch` 是一个理想的选择。例如,当用户鼠标悬停在某个链接或按钮上时,可以触发 `prefetch`,以便在用户真正点击时,组件能够更快地呈现。
## API
```typescript
interface ModuleFederation {
prefetch(options: {
id: string;
dataFetchParams?: Record<string, any>;
preloadComponentResource?: boolean;
}): void;
}
```
### 参数
- `id` (必填): `string`
远程模块的唯一标识符,格式为 `'<remoteName>/<exposedModule>'`。例如, `'shop/Button'`。
- `preloadComponentResource` (可选): `boolean`
是否预加载组件的资源,包括 JavaScript chunk 和关联的 CSS 文件。默认为 `false`。
- `dataFetchParams` (可选): `object`
如果远程组件存在数据获取函数,设置后会传递给数据获取函数。
## 使用示例
假设我们有一个远程应用 `shop`,它暴露了一个组件 `Button`,并且该组件关联了一个数据获取函数。
{props.prefetchDemo || React.createElement(PrefetchDemo)}
通过灵活使用 `prefetch`,您可以根据应用的具体场景和用户行为,精细地控制资源的加载时机,从而优化应用性能。