## 提取到被 Memo 包裹的组件中
将昂贵的计算工作提取到被 memo 包裹的组件中,以便在计算前实现提前返回。
**错误做法(即使在加载时也会计算头像):**
tsx
function Profile({ user, loading }: Props) {
const avatar = useMemo(() => {
const id = computeAvatarId(user)
return
}, [user])
if (loading) return
return
{avatar}
}
**正确做法(加载时跳过计算):**
tsx
const UserAvatar = memo(function UserAvatar({ user }: { user: User }) {
const id = useMemo(() => computeAvatarId(user), [user])
return
})
function Profile({ user, loading }: Props) {
if (loading) return
return (
)
}
**注意:** 如果您的项目启用了 [React Compiler](https://react.dev/learn/react-compiler),则无需手动使用 `memo()` 和 `useMemo()` 进行记忆化。编译器会自动优化重新渲染。