rsnext/errors/react-client-hook-in-server-component.mdx

44 lines
809 B
Text
Raw Normal View History

---
title: React client hook in Server Component
---
## Why This Error Occurred
You are using a React client hook in a Server Component.
## Possible Ways to Fix It
Mark the component using the hook as a Client Component by adding `'use client'` at the top of the file.
##### Before
```jsx filename="app/example.js"
import { useEffect } from 'react'
export default function Example() {
useEffect(() => {
console.log('in useEffect')
})
return <p>Hello world</p>
}
```
##### After
```jsx filename="app/example.js"
'use client'
import { useEffect } from 'react'
export default function Example() {
useEffect(() => {
console.log('in useEffect')
})
return <p>Hello world</p>
}
```
## Useful Links
docs: Rewrite Rendering Section and React Essentials Page (#51579) We initially wrote the [React page](https://nextjs.org/docs/getting-started/react-essentials) to introduce Server Components in the App Router, but over time, some implementation details have changed, and the information has become stale. The React team is working on adding new docs, so I'd like to change the narrative on the Next.js docs from "client vs. server components" to "writing code for the server and for the client" - and link back to the React documentation when it becomes available. As React developers, we're very familiar with writing code for the client, it's nice and simple. But doing so comes at the expense of not being familiar with the server. The aim of these docs is to help developers become proficient in both the client and server environments. I'd like to take it back to the foundations, and not use abstractions like SSG and CSR, MPAs or SPAs, as those terms come with their own set of assumptions that make it harder to understand how RSC works. Instead, we'll focus on the request lifecycle, show how application code flows from the server to the client, and discuss the trade-offs of doing operations in each environment. - [x] Page: Rendering Fundamentals - [x] Environments: Client and Server - [x] Request-response lifecycle - [x] Network Boundary - [x] Page: Server Components - [x] Benefits and use cases of server rendering - [x] How to use Server Components in Next.js - [x] How Server Components are rendered - [x] Static Rendering - [x] Dynamic Rendering - [x] Streaming - [x] Page: Client Components - [x] Benefits and use cases of client rendering - [x] How to use Client Components in Next.js - [x] How Client Components are rendered - [x] Initial vs. Subsquent navigation - [x] Page: Composition Patterns - [x] When to use client and server components - [x] Server Component Patterns - [x] Client Component Patterns - [x] Interleaving Client and Server Components - [ ] ~Diagrams~ will follow up with new PR. - [x] Set up redirects: https://github.com/vercel/front/pull/24917 --------- Co-authored-by: Térence Hollander <hollanderterence@gmail.com> Co-authored-by: shawnthwei <32075290+shawnthwei@users.noreply.github.com> Co-authored-by: Michael Novotny <manovotny@gmail.com>
2023-08-24 15:48:44 +02:00
[Server Components](/docs/app/building-your-application/rendering/server-components)