rerender-memo について
React のレンダリングに関するスキルで、時間のかかる処理をメモ化コンポーネントに分け、早期リターン時の計算を避けます。React Compiler が有効なら手動のメモ化は不要になる点も説明します。
主な機能
- 01重い処理をメモ化コンポーネントに分離
- 02計算前の早期リターン
- 03React Compiler の自動最適化を考慮
活用シーン
- 01プロフィール読み込み中のアバター計算を回避
- 02計算を独立コンポーネントに分離
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ theorcdev/ 8bitcn-ui --skill rerender-memoインストール後、Claude Code で/rerender-memoを入力して読み込まれたか確認します。
詳細
メモ化コンポーネントへの切り出し
重い処理をメモ化コンポーネントに切り出すと、計算を行う前に早期リターンできるようになります。
誤り(読み込み中でもアバターを計算します):
function Profile({ user, loading }: Props) {
const avatar = useMemo(() => {
const id = computeAvatarId(user)
return <Avatar id={id} />
}, [user])
if (loading) return <Skeleton />
return <div>{avatar}</div>
}
正しい例(読み込み中は計算をスキップします):
const UserAvatar = memo(function UserAvatar({ user }: { user: User }) {
const id = useMemo(() => computeAvatarId(user), [user])
return <Avatar id={id} />
})
function Profile({ user, loading }: Props) {
if (loading) return <Skeleton />
return (
<div>
<UserAvatar user={user} />
</div>
)
}
注: プロジェクトで React Compiler が有効になっている場合、memo() と useMemo() による手動のメモ化は不要です。コンパイラーが再レンダリングを自動的に最適化します。
コメント
Markdown 対応