Hi,
Just to confirm I’m not missing something here with the cacheComponents flag in canary.
From what I understand, I can’t call cookies() or headers() inside a component if that component is used inside another component that has the "use cache" directive. For example, this doesn’t work:
async function UserData() {
// getSession calls headers()
const session = await getSession();
return <div>{session?.user?.email}</div>;
}
export default async function Test() {
"use cache";
return (
<main>
<h1>Static content</h1>
<Suspense>
<UserData />
</Suspense>
</main>
);
}
Is it expected behavior that this fails, or should it actually work and I’m doing something wrong?
To make it work, I need to move "use cache" to the static component, like this:
async function StaticComponent() {
"use cache"
return <div>static content</div>;
}
export default async function Test() {
return (
<main>
<StaticComponent />
<Suspense>
<UserData />
</Suspense>
</main>
);
}
Is that the right approach?
Thanks.