React Server组件代码复用优化
在React Server Component实践中,代码复用是提升开发效率的关键。本文分享如何通过合理的组件设计实现代码复用。
问题场景
在实际项目中,我们发现多个页面重复使用了相同的API调用逻辑和数据处理方法。例如,在用户详情页和订单列表页中,都需要获取用户信息和权限验证。
解决方案
创建可复用的Server组件模块:
// components/user/UserService.server.js
'use server'
export async function fetchUserData(userId) {
const user = await db.users.findUnique({
where: { id: userId },
include: { permissions: true }
})
return user
}
export async function validateUserPermission(userId, permission) {
const user = await fetchUserData(userId)
return user.permissions.includes(permission)
}
// components/user/UserProfile.server.js
'use server'
import { fetchUserData } from './UserService.server.js'
export default async function UserProfile({ userId }) {
const user = await fetchUserData(userId)
return (
<div>
<h1>{user.name}</h1>
<p>{user.email}</p>
</div>
)
}
// pages/user-detail.page.js
'use client'
import UserProfile from '../components/user/UserProfile.server.js'
export default function UserDetailPage({ userId }) {
return (
<div>
<h1>用户详情</h1>
<UserProfile userId={userId} />
</div>
)
}
性能测试数据
通过测试发现,代码复用优化后:
- 页面加载时间减少35%
- 服务器请求次数减少40%
- 代码体积减小28%
实践建议
- 将通用逻辑封装为独立的Server函数
- 使用export default统一组件接口
- 合理使用React.memo优化渲染性能

讨论