Video yükleniyor...

Video Yüklenemedi

Ana Sayfaya Dön

How to use Next.js metadata if the page is a client component

91,579 görüntüleme • 1 yıl önce •via X (Twitter)

10 Yorum

Alex Sidorenko profil fotoğrafı
Alex Sidorenko1 yıl önce

This is a quick fix for when you are refactoring your codebase to the App Router and want to quickly add metadata to existing pages with interactivity. But ideally, it's better to isolate interactive bits closer to where they're needed.

Guillermo Rauch profil fotoğrafı
Guillermo Rauch1 yıl önce

Love that page.client convention. Clean

Alex Sidorenko profil fotoğrafı
Alex Sidorenko1 yıl önce

Yes! It's from the Next Discord FAQ. Props to Vũ Văn Dũng (not sure what's the right X handle)

عَ profil fotoğrafı
عَ1 yıl önce

Can I do the same thing to call server actions or get cookie information ? 🤔

Alex Sidorenko profil fotoğrafı
Alex Sidorenko1 yıl önce

Server Actions are designed to be used in client components.

Moti Azu profil fotoğrafı
Moti Azu1 yıl önce

You literally made the page not a client component. I like the naming convention you used though. But you didn’t use metadata in a client component.

Ajin profil fotoğrafı
Ajin1 yıl önce

cool

Benzigar Alvin. profil fotoğrafı
Benzigar Alvin.1 yıl önce

nice idea, wrapping client component inside server component. 👍🏻

rayyan ✦ design engineer profil fotoğrafı
rayyan ✦ design engineer1 yıl önce

i never think of it this way, thanks man

Subhajit Bhar profil fotoğrafı
Subhajit Bhar1 yıl önce

I'm learning next.js. this is very useful for me. Thanks for sharing 🙏🏼

Benzer Videolar

React tip: "use client" misconceptions (2/5) 🚫 "You cannot nest Server Components inside Client Components because "use client" turns everything into Client Components." ✅ We can pass the rendered result of Server Components to Client Components as props. Simple example: (Server Component) (Client Component) (Server Component) is designed for the client. It needs to instantly open and close when clicked. is designed for the server. It uses packages that don't work in the browser and needs to fetch data close to where it's stored without exposing credentials. So, how can we nest a component that uses server APIs inside a component that uses client APIs... without using `import`? React props to the rescue! --- (0:00) 1-4: Reminder: Importing code forms a module dependency graph. Adding dependencies to a server or client bundle. (0:23) 5-6: Reminder: Using components eventually forms a rendered component tree. (0:37) 9: Oh no! We get an error when trying to `import` a client API (useState) into a server module. (0:44) 10: We know the trick by now: Add "use client" to mark `2.js` as a client entry point. This moves the module to the client bundle and allows us to use client APIs like `useState.` (0:51) 11: But we get a new error! "use client" moved all imported dependencies into the client bundle, including our ORM package, which doesn't work in the browser. (0:59) 13: Let's refactor without changing our rendered component hierarchy. First, we move the `Cart` import to the parent file that imports `Modal`. This moves `Cart` outside the "use client" boundary and consequently the client bundle. (1:11) 15: Then, we pass down the rendered result of `Cart` as a prop to `Modal`. This allows `Cart` to be entirely rendered on the server as a Server Component before being passed down. `Modal` has no knowledge of what the `cart` prop is. Its only responsibility is placing whatever it receives into the `{cart}` slot. (1:15) 16: Finally, it's common to use the special `children` prop for a component's primary content. The key insight is that we were able to use props to retain our desired component hierarchy even though we changed our module dependency graph.

Delba

43,989 görüntüleme • 2 yıl önce