⚛️ מבוא ל-React

React היא ספריית JavaScript לבניית ממשקי משתמש (UI), שפותחה על ידי פייסבוק. היא מתמקדת בבניית קומפוננטות לשימוש חוזר וניהול יעיל של עדכוני DOM באמצעות Virtual DOM.

למה React?
  • קומפוננטות: פיצול הממשק לחלקים קטנים ועצמאיים.
  • Virtual DOM: עדכון יעיל של ה-DOM רק איפה שצריך.
  • Declarative: כתיבת קוד שמתאר "מה" להציג, ריאקט דואגת ל"איך".
  • Ecosystem: קהילה עצומה וספריות רבות.

שלום עולם ב-React

📝 JSX

JSX הוא הרחבת תחביר ל-JavaScript שמאפשרת לכתוב HTML בתוך JS. זה נראה כמו HTML אבל זה בעצם סוכר תחבירי לקריאות פונקציה של React.

חוקים חשובים ב-JSX
  • חייב להיות אלמנט אב אחד (או Fragment <>...</>).
  • תגיות חייבות להיסגר (למשל <br />).
  • שימוש ב-className במקום class.
  • סוגריים מסולסלים {} להטמעת ביטויים של JS.

🧩 קומפוננטות (Components)

קומפוננטות הן אבני הבניין של React. כיום נהוג להשתמש ב-Functional Components ולא ב-Class Components.

מבנה קומפוננטה
function MyComponent() {
  return (
    <div>
      <h1>התוכן שלי</h1>
    </div>
  );
}

שם הקומפוננטה חייב להתחיל באות גדולה!

🎁 Props (Properties)

Props הם הדרך להעביר מידע מקומפוננטת אב לקומפוננטת ילד. הם לקריאה בלבד (Read-Only).

💾 State (useState)

State הוא הזיכרון של הקומפוננטה. ה-State פרטי לקומפוננטה וניתן לשינוי. שינוי ב-State גורם לרינדור מחדש.

⚡ Effects (useEffect)

useEffect מאפשר לבצע "תופעות לוואי" - קריאות לשרת, מניפולציות על DOM, טיימרים.

  • useEffect(() => { ... }): רץ אחרי כל רינדור.
  • useEffect(() => { ... }, []): רץ רק פעם אחת.
  • useEffect(() => { ... }, [deps]): רץ כשהערכים במערך משתנים.

🖱️ אירועים (Events)

אירועים ב-React דומים ל-HTML רגיל, אבל עם תחביר camelCase (onClick) ומעבירים פונקציה ממש ולא מחרוזת.

📋 רשימות (Lists)

להצגת רשימת פריטים משתמשים ב-map(). חובה לתת לכל פריט key ייחודי.

📝 טפסים (Forms)

ב-React נהוג להשתמש ב-Controlled Components - ה-State הוא "מקור האמת" היחיד לערכי הטופס.

🎣 Hooks נוספים

מלבד useState ו-useEffect, יש עוד Hooks שימושיים.

useRef

גישה ישירה לאלמנט DOM, או שמירת ערך שלא גורם לרינדור מחדש.

🌍 Routing (React Router)

ב-SPA אנו רוצים לעבור בין "דפים" ללא רענון הדפדפן. react-router-dom מאפשרת זאת.

  • BrowserRouter: עוטף את האפליקציה ומנהל את ההיסטוריה.
  • Routes ו-Route: הגדרת הנתיבים והקומפוננטות.
  • Link: קישור למעבר בין דפים.

🌳 Context API

Context מאפשר להעביר מידע עמוק בעץ הקומפוננטות בלי "Props Drilling".

⚙️ useReducer

useReducer הוא אלטרנטיבה ל-useState לניהול State מורכב, בדומה ל-Redux.

🚀 Performance Hooks

useMemo ו-useCallback משמשים לאופטימיזציה ומניעת חישובים או רינדורים מיותרים.

useMemo

שומר תוצאה של חישוב יקר ("Memoization").

🎣 Custom Hooks

אפשר ליצור Hooks משלנו כדי לעשות שימוש חוזר בלוגיקה (State ו-Effects) בין קומפוננטות.