cache() memoizes values per request (server components).
Code:
1import { cache } from "react";23const getUser = cache(async (id: string) => {4 const response = await fetch(`/api/users/${id}`);5 return response.json();6});78async function UserPage({ params }) {9 const user = await getUser(params.id);10 const profile = await getUser(params.id); // cached!1112 return (13 <div>14 <h1>{user.name}</h1>15 <p>{profile.bio}</p>16 </div>17 );18}
How it works:
Benefits:
vs useMemo:
vs useEffect: