spinny:~/writing $ less mastering-react-server-components.md
12Τα React Server Components (RSC) έχουν αλλάξει θεμελιωδώς τον τρόπο που χτίζουμε εφαρμογές React. Μεταφέροντας τη λογική rendering στον server, μπορούμε να μειώσουμε σημαντικά το JavaScript bundle που στέλνεται στον client, οδηγώντας σε ταχύτερους χρόνους φόρτωσης. Σε αυτό το άρθρο εξερευνούμε προχωρημένα μοτίβα και βέλτιστες πρακτικές για RSC το 2026.34## Τι είναι τα Server Components;56Παραδοσιακά, τα React components γινόταν render εξ ολοκλήρου στον client (CSR) ή pre-render στον server ως HTML (SSR). Τα **Server Components** μας επιτρέπουν να κάνουμε render components _αποκλειστικά_ στον server. Ο κώδικάς τους δεν στέλνεται ποτέ στον browser.78### Τα Οφέλη9101. **Μηδενικό μέγεθος Bundle**: Τα dependencies παραμένουν στον server.112. **Άμεση πρόσβαση στο Backend**: Μπορείτε να κάνετε query τη βάση δεδομένων απευθείας.123. **Αυτόματο Code Splitting**: Τα Client components που εισάγονται server-side γίνονται αυτόματα split.1314## Μοτίβο Ανάκτησης Δεδομένων1516```tsx17// app/users/page.tsx18import { db } from '@/lib/db';1920export default async function UsersPage() {21 const users = await db.user.findMany();2223 return (24 <main>25 <h1>Users</h1>26 <ul>27 {users.map((user) => (28 <li key={user.id}>{user.name}</li>29 ))}30 </ul>31 </main>32 );33}34```3536### Suspense για Streaming3738```tsx39import { Suspense } from 'react';40import UserList from './UserList';41import LoadingSkeleton from './LoadingSkeleton';4243export default function Page() {44 return (45 <section>46 <h1>My Users</h1>47 <Suspense fallback={<LoadingSkeleton />}>48 <UserList />49 </Suspense>50 </section>51 );52}53```5455## Συνδυασμός Server και Client Components5657**Κανόνας**: Τα Server Components μπορούν να εισάγουν Client Components. Τα Client Components _δεν μπορούν_ να εισάγουν απευθείας Server Components. Αλλά μπορείτε να περάσετε ένα Server Component ως `children`.5859### Το Μοτίβο "Children"6061```tsx62// ClientComponent.tsx63'use client';6465import { useState } from 'react';6667export default function ClientWrapper({ children }) {68 const [count, setCount] = useState(0);6970 return (71 <div onClick={() => setCount((c) => c + 1)}>72 Count: {count}73 {children} {/* This can be a Server Component! */}74 </div>75 );76}77```7879```tsx80// ServerPage.tsx81import ClientWrapper from './ClientWrapper';82import ServerContent from './ServerContent';8384export default function Page() {85 return (86 <ClientWrapper>87 <ServerContent /> {/* This works perfectly */}88 </ClientWrapper>89 );90}91```9293## Συνηθισμένες Παγίδες94951. **Χρήση Context σε Server Components**: Το Context είναι έννοια του client-side.962. **Προσθήκη Event Handlers**: Δεν μπορείτε να προσθέσετε `onClick` ή `onChange` σε Server Component.9798## Συμπέρασμα99100Τα React Server Components δεν είναι απλά ένα χαρακτηριστικό· είναι αλλαγή παραδείγματος. Κατανοώντας τα όρια μεταξύ server και client, μπορείτε να χτίσετε εφαρμογές που είναι ταυτόχρονα ιδιαίτερα διαδραστικές και απίστευτα γρήγορες.101
:Εξοικείωση με τα React Server Components το 2026lines 1-101 (END) — press q to close