PracticU

שימוש ב-Fragment ב-React

בלי כתוביותעם כתוביות
PracticU › קורס ריאקט - React › שימוש ב-Fragment ב-React
מילון מושגים:
React - ספריית JavaScript לבניית ממשקי משתמש מבוססי רכיבים, שפותחה על ידי פייסבוק.
תגית - סימון בקוד, למשל ב-HTML, שתוחם רכיב ומגדיר את תפקידו או תכונותיו. גם תווית לסימון וקיטלוג פריטים.
HTML - שפת הסימון שבה בונים את מבנה ותוכן דפי האינטרנט, באמצעות תגיות שמגדירות כותרות, פסקאות, קישורים ועוד.
רכיב - יחידת בניין עצמאית וניתנת לשימוש חוזר בתוך מערכת או ממשק משתמש, שאחראית על חלק מוגדר מהתפקוד.
לייאאוט - ארגון וסידור הרכיבים החזותיים על המסך או בדף, כמו מיקום כפתורים, טקסט ותמונות.
root - משתמש העל במערכות Linux, בעל הרשאות מלאות לכל פעולה. גם הרמה העליונה בעץ של תיקיות או נתונים.
CSS - שפת עיצוב שקובעת את המראה של דפי אינטרנט: צבעים, גופנים, מיקום וסידור הרכיבים.
DOM - ייצוג עץ של מבנה דף HTML בזיכרון, שמאפשר לקוד לקרוא ולשנות את תוכן הדף ומבנהו.

שימוש ב-Fragment ב-React
קומפוננט ב-React חייב להחזיר תגית אחת עוטפת, ולכן קל לסיים עם div מיותר ב-HTML. ההרצאה מראה איך Fragment פותר את זה.
השלבים העיקריים
1. מקום לדוגמאות: את כל יסודות ה-React בונים בדף הבית. יוצרים תיקייה וקומפוננט בשם Home (עם הפקודה create functional component), ומציבים אותו בצורה hardcoded בתוך ה-Layout הראשי. ניווט בין דפים (ראוטינג) הוא נושא נפרד.
2. הבעיה: בקומפוננט עם h2 ו-h3 בלבד, React מציגה שגיאה. החוק אומר שמחזירים תגית אחת בלבד (root element), גם אם שתי התגיות באותה שורה.
3. הפתרון הרגיל: עוטפים ב-div. זה עובד, אבל מוסיף תגית שאין בה צורך ושמשוכפלת עם כל שכפול של הקומפוננט.
4. Fragment: מייבאים אותו מ-react ועוטפים בו את התוכן. React מקבלת אותו כ-root element, אך אינה יוצרת ממנו תגית ב-HTML הסופי.
5. הצורה המקוצרת: במקום לכתוב Fragment אפשר לכתוב תגית פתיחה וסגירה ריקות. זה זהה, מודרני ונפוץ יותר, והמרצה משתמש בה.
6. בדיקה: ב-Inspect רואים את h2 ו-h3 ישירות בתוך main. עם div הם היו בתוך תגית עוטפת.
שימו לב
1. Fragment לא קשור ל-CSS. אם אין צורך בעיצוב לקומפוננט, אפשר למחוק את קובץ ה-CSS שלו, ואם יש, משאירים.
2. אם יש סיבה אמיתית לעטוף, למשל מסגרת, הסתרה של כולם בבת אחת או מחלקת עיצוב, משתמשים ב-div או בתגית אחרת.
אחרי ההרצאה אפשר להחזיר כמה אלמנטים מקומפוננט בלי להוסיף תגית מיותרת ל-DOM.
השיעור הבא בקורס: שימוש ב-Interpolation ב-React

פרקי ההרצאה: שימוש ב-Fragment ב-React

  1. 00:00

    הכרת Component Basics ב-React

  2. 00:56

    יצירת קומפוננט Home

  3. 02:37

    הצבת Home בצורה hardcoded

  4. 03:36

    מהו Fragment

  5. 05:16

    החובה בתגית שורש אחת

  6. 06:54

    החיסרון של תגית עוטפת מיותרת

תמלול ההרצאה: שימוש ב-Fragment ב-React

הטקסט המלא של הדקות הראשונות בהרצאה «שימוש ב-Fragment ב-React» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:02

    אנחנו מגיעים לנושא די נרחב, די גדול מבחינת התוכן שיש לו, וזה Component Basics. זה בעצם הדברים הבסיסיים שיש ב-react, ש-react מספקת לנו.

  2. 00:18

    אז אנחנו הולכים לראות את ה-basics עצמם של-react, כאשר כל נתון בסיסי כזה הולך להיות באיזשהו סרטון נפרד. הדבר הראשון שאנחנו רוצים לעשות זה קודם כל איפה אנחנו הולכים לכתוב את כל הדברים האלה, הרי אנחנו בנינו את ה-Layout וב-Layout היה לנו את האזור הראשי של ה-Layout, ראינו את ה-Header,

  3. 00:42

    ראינו את ה-Footer, ראינו את ה-Menu אבל כל הדברים האלה שייכים ל-Layout. אולי בהמשך נוסיף עוד איזה משהו שקשור ל-Layout עצמו אבל איפה אנחנו הולכים לכתוב את כל ה-Basics?

  4. 00:53

    אז כל ה-Basics אנחנו הולכים לבנות בדף Home. בואו רגע ניגש לטרמינל, האמת עוד לא הרצתי את התוכנית הפעם npm art go ובינתיים שהיא תרוץ בואו נפתח טרמינל מספר 2 ונצרף לעצמנו איזשהו דף בייט שבתוכו אנחנו הולכים לבנות את כל מה שקשור לבייסיקס עצמם של ריאקט אז יש לנו כאן את הפקודה create functional

  5. 01:28

    component אבל אנחנו לא רוצים לבנות את זה בתוך האזור של הלאוט אז בואו נייצר לעצמנו אזור שנקרא home ובתוך ה-home אנחנו רוצים הנה האתר מתחיל לרוץ לו נוריד את זה רגע למטה אנחנו רוצים קודם כל קומפוננט שיהיה אחראי על דף הבית שבתוכו אנחנו נראה את כל ה-basics האלה אז נקרא לו גם כן home שימו לב שזה האזור וזה הקומפוננט עצמו שלא יבלבל

  6. 01:59

    נריץ את זה רגע ואנחנו רואים שהמערכת בנתה לנו כאן home קומפוננט שנקרא home עד כאן זה בסדר יש לנו את האתר שרץ לו ודבר ראשון בואו נציב את ה-home כאן עכשיו אנחנו כמובן יודעים שאנחנו רוצים לראות את האזור של דף הבית רק כאשר היוזר לוחץ על התפריט של ה-home

  7. 02:25

    ואם הוא ילחץ על התפריט של המוצרים אז הוא כמובן יראה כאן את האזור של המוצרים הדבר הזה קשור לנושא האחר שנקרא ראוטינג אנחנו לא מתעסקים כרגע עם ראוטינג אנחנו מתעסקים עם דברים בסיסיים יותר בריאקט ולכן בגלל שאני לא רוצה כרגע בנושא הזה להיכנס לראוטינג אז אני אציב בצורה hardcoded את ה-component

  8. 02:47

    של ה-home. בואו רק ניגש ונכתוב כאן איזה h2 כזה home page רק בשביל לראות משהו וניגש לאזור של ה-layout הראשי את זה אפשר לסגור ובמקום p נגדיר שאנחנו רוצים hardcoded כרגע את ה-home.

  9. 03:15

    אז הנה אנחנו רואים שהוא נמצא פה. בואו רגע נסתכל על האתר, והנה אנחנו רואים שפשוט שתלנו את זה. זה לא משנה, התפריט כרגע לא עובד, זה יעבוד בנושא הראוטינג.

  10. 03:29

    כאן אנחנו רוצים עכשיו לראות את הדברים הבסיסיים שריאקט מספקת לנו. אז מה אנחנו הולכים לראות בתור דבר ראשון בסרטון הזה?

  11. 03:38

    הדבר הראשון שאנחנו הולכים לראות שהוא דבר בסיסי שריאקט מספקת לנו זה קונספט שנקרא fragment. מה זה אומר fragment? מעין קומפוננט אפשר להגיד שריאקט מכילה שחוסכת לנו תגית מיותרת.

  12. 04:00

    מה הכוונה? בוא נניח שאנחנו רוצים באמת את הקומפוננט הזה של ה-home והנה אנחנו רואים פה את ה-H2, הכל בסדר, אבל אנחנו נמצאים בתוך הדיב הזאת.

  13. 04:16

    אנחנו רואים שיש לנו פה איזושהי דיב שאנחנו נמצאים בתוכה. וזה בסדר כרגע, אבל בואו נניח שאני רוצה לעשות אולי משהו קצת אחר.

  14. 04:28

    בואו נניח שאני רוצה שיהיה לי כאן h2 ובואו נגיד גם h3 שם subheader ועוד כל מיני דברים שהולכים להיות פה בהמשך. אם אני מסתכל אני רואה את זה כאן. למה בעצם אני צריך את זה?

  15. 04:48

    למה יש לנו תמיד את הדיב הזאת שאנחנו רואים שעוטפת את כל הקומפוננטות? אז אתם יכולים להגיד, נו ברור, אתה רוצה שיהיה לך איזשהו קלאס ניים?

  16. 04:59

    אוקיי, בסדר, בוא נניח שאני לא רוצה קלאס ניים, לא רוצה איזושהי דיב עוטפת שמכילה לי את הקלאס ניים, אולי אני לא רוצה בכלל עיצוב כרגע עבור, לפחות לא עבור הקומפוננט הזה.

  17. 05:10

    ויש לנו פה איזושהי דיב שעוטפת לנו את הכל, אבל האם אני באמת צריך אותה? מה, אם לא היה לי את הדיו אז הקומפוננט לא היה מוצג? מה, לא היינו רואים את ה-H2 ואת ה-H3? אז בואו ננסה, בואו נוריד רגע את הדיו וכבר אנחנו חוטפים שגיאה והמערכת לא מסכימה.

  18. 05:29

    למה? בגלל שברגע שאנחנו מחזירים מידע מקומפוננט, החוק בריאקט אומר שהמידע חייב להיות בתגית אחת. זה לא משנה אם יש לה עיצוב או אין לה עיצוב, אבל חייבת להיות משהו שנקרא רוט אלמנט, שעוטפת לנו את כל ה-Component הזה.

  19. 05:49

    אז אתם יכולים להגיד, נו בסדר, אז שים דיו, מה הבעיה? אוקיי, אין כזאת בעיה, אבל זה אומר שרק בגלל חוקי React היינו צריכים להוסיף דיו.

  20. 06:00

    יש לי עכשיו תגית ב-HTML שאני לא באמת צריך אותה, אני לא רוצה את הדיו הזאת, אין לה שום עיצוב, היא לא נותנת לי שום דבר ב-HTML, והסיבה בעצם היחידה שהיא קיימת כאן זה בגלל ש-React אומרת לי שאם אתה בונה קומפוננט אתה חייב להחזיר מהקומפוננט תגית האחת ויחידה, בתוכה תחזיר מה שאתה

  21. 06:27

    רוצה, אתה לא יכול להחזיר שתי תגיות או יותר מהקומפוננט, אין דבר כזה, גם לא אם תשים לי את הכל נניח בשורה אחת, React לא מסכימה להחזיר יותר מתגית אחת ובתוכה שיהיה הכל.

  22. 06:43

    טוב, בואו רגע נעשה קונטרול Z, נחזיר את הדיו. זה המצב, זה בגללו בעצם אנחנו רואים כאן שאנחנו מחויבים מבחינת React באיזושהי תגית עוטפת.

  23. 06:54

    וזה איזשהו חיסרון, כי עכשיו יש לנו בדפדפן תגית מיותרת, שאנחנו לא באמת צריכים אותה בשביל הדף עצמו. אם היה לי פה איזשהו עיצוב שהייתי רוצה בשביל כולם, ברור שהייתי רוצה לעטוף אותה.

  24. 07:08

    אם היה לה משמעות אחרת, נניח הייתי רוצה, לא יודע מה, לשים את כל החבר'ה האלה במסגרת כלשהי, או בצד, או משהו כזה, שזה כן הגיוני לשים פה איזה דיב, או הייתי רוצה להעלים אותם בבת אחת, הייתי משאיר את הדיב הזאת או איזושהי תגית אחרת.

  25. 07:24

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

לקורס המלא: קורס ריאקט אונליין

ההרצאה הקודמת: ריאקט - יצירת תפריט באתר - Menu

ההרצאה הבאה: שימוש ב-Interpolation ב-React

הרצאות קשורות מקורסים אחרים

  • שימוש ב-Fragment בעזרת XML
  • שימוש ב-NuGet
  • שימוש ב-ModelState
  • בדיקות מקרי שימוש

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס NodeJS