rsnext/errors/class-component-in-server-component.mdx

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

58 lines
1.1 KiB
Text
Raw Normal View History

---
title: React Class component rendered in a Server Component
---
## Why This Error Occurred
You are rendering a React Class Component in a Server Component, `React.Component` and `React.PureComponent` only works in Client Components.
## Possible Ways to Fix It
Use a Function Component.
##### Before
```jsx filename="app/page.js"
export default class Page extends React.Component {
render() {
return <p>Hello world</p>
}
}
```
##### After
```jsx filename="app/page.js"
export default function Page() {
return <p>Hello world</p>
}
```
Mark the component rendering the React Class Component as a Client Component by adding `'use client'` at the top of the file.
##### Before
```jsx filename="app/page.js"
export default class Page extends React.Component {
render() {
return <p>Hello world</p>
}
}
```
##### After
```jsx filename="app/page.js"
'use client'
export default class Page extends React.Component {
render() {
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)