[Bug]: Example in "Adding Interactivity" works with vite but not with nextjs
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- JavaScript
- Sterne
- 11.8k
- Forks
- 7.9k
- Ø Merge
- 1 T. 11 Std.
- Gemergte PRs (30 T.)
- 11
Beschreibung
Summary
Description
The below code example on the page https://react.dev/learn/adding-interactivity is deployed correctly when I build the project using vite. However, when I try to deploy the same code in a nextjs project, I get error "Event handlers cannot be passed to Client Component props."
export default function App() {
return (
<Toolbar
onPlayMovie={() => alert('Playing!')}
onUploadImage={() => alert('Uploading!')}
/>
);
}
function Toolbar({ onPlayMovie, onUploadImage }) {
return (
<div>
<Button onClick={onPlayMovie}>
Play Movie
</Button>
<Button onClick={onUploadImage}>
Upload Image
</Button>
</div>
);
}
function Button({ onClick, children }) {
return (
<button onClick={onClick}>
{children}
</button>
);
}
Please note that I am new to React and am using the articles on this website to learn React. So there could be areas where I may be wrong and I apologize for any inconvenience caused due to my ignorance of certain concepts.
I used NextJS first as it was the recommended framework. Only after the code did not deploy, I tried the same code in a new project but this time I used vite.
The error I see is in the browser as below
Runtime ErrorServer
Event handlers cannot be passed to Client Component props.
<button onClick={function onPlayMovie} children=...>
^^^^^^^^^^^^^^^^^^^^^^
If you need interactivity, consider converting part of this to a Client Component.
src/app/App.js (3:5) @ App
1 | export default fun```
Below is the trace from the command line
⨯ Error: Event handlers cannot be passed to Client Component props.
<button onClick={function onPlayMovie} children=...>
^^^^^^^^^^^^^^^^^^^^^^
If you need interactivity, consider converting part of this to a Client Component.
at stringify (<anonymous>)
at stringify (<anonymous>)
at stringify (<anonymous>) {
digest: '1272121264'
}
⨯ Error: Event handlers cannot be passed to Client Component props.
<button onClick={function onUploadImage} children=...>
^^^^^^^^^^^^^^^^^^^^^^^^
If you need interactivity, consider converting part of this to a Client Component.
at stringify (<anonymous>)
at stringify (<anonymous>)
at stringify (<anonymous>) {
digest: '628795184'
}
GET / 500 in 25260ms
Page
https://react.dev/learn/adding-interactivity
Details
Below are the details of my environment from the package.json
"dependencies": {
"react": "19.1.0",
"react-dom": "19.1.0",
"next": "15.5.5"
}
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne auf der Seite Adding Interactivity und reproduziere das Beispiel in einer Next.js 15.5.5-App. Vergleiche es anschließend mit dem Vite-Ergebnis. Ermittle, welche Anleitung oder Anpassung des Beispiels die Seite für den gemeldeten Server-/Client-Komponentenfehler benötigt; abgeschlossen ist die Aufgabe, wenn die Seite die Erwartungen korrekt festlegt und einen funktionierenden Weg dokumentiert.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- javascript, nextjs, react
- Bereich
- documentation
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100