⚛️ מבוא ל-React
React היא ספריית JavaScript לבניית ממשקי משתמש (UI), שפותחה על ידי פייסבוק. היא מתמקדת בבניית קומפוננטות לשימוש חוזר וניהול יעיל של עדכוני DOM באמצעות Virtual DOM.
- קומפוננטות: פיצול הממשק לחלקים קטנים ועצמאיים.
- Virtual DOM: עדכון יעיל של ה-DOM רק איפה שצריך.
- Declarative: כתיבת קוד שמתאר "מה" להציג, ריאקט דואגת ל"איך".
- Ecosystem: קהילה עצומה וספריות רבות.
שלום עולם ב-React
📝 JSX
JSX הוא הרחבת תחביר ל-JavaScript שמאפשרת לכתוב HTML בתוך JS. זה נראה כמו HTML אבל זה בעצם סוכר תחבירי לקריאות פונקציה של React.
- חייב להיות אלמנט אב אחד (או 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) בין קומפוננטות.