PracticU

הצגת רשימה - React List

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

הצגת רשימה - React List
רשימה שמגיעה משרת היא בדרך כלל מערך של אובייקטים, ו-React מציגה אותה באמצעות map. ההרצאה מראה איך לעשות את זה נכון, ולמה כל פריט צריך key.
השלבים העיקריים
1. הנתונים: בקומפוננט Desserts מגדירים מערך items. כל פריט הוא אובייקט עם מזהה ושם, למשל אייס קרים, פבלובה ואקלר. המרצה מניח שבפועל המערך מגיע מהשרת.
2. map ב-JavaScript: הפונקציה מקבלת פונקציה (בדרך כלל arrow function), קוראת לה על כל פריט ומחזירה מערך חדש באותו אורך, בלי לשנות את המקורי. הדגמה: ריבוע של כל מספר במערך, והחזרת מחרוזת עם span סביב כל מספר. התוצאה היא מערך של מחרוזות HTML.
3. שימוש ב-React: בתוך Interpolation עושים items.map ומחזירים לכל פריט span. כדי להציג ערך ולא את המילה item, צריך סוגריים מסולסלים בתוך ה-span.
4. שגיאה: אובייקט כ-child: אם מציבים את האובייקט עצמו מופיעה השגיאה "Objects are not valid as a React child". יש להציג רק את השדה הרצוי, כאן item.name.
5. שגיאת key: הקונסול מתלונן ש-"Each child in a list should have a unique key". מוסיפים לכל אלמנט תכונה key. ערך זהה לכולם, כמו abc, יוצר שגיאה נוספת על שני children עם אותו מפתח. פותרים עם key={item.id}.
6. למה צריך key: כשהרשימה משתנה, למשל משתמש מוחק פריט, React צריכה להשוות בין הרשימה הקודמת לחדשה. עם מפתחות ייחודיים היא מזהה אילו פריטים נשארו, ומעדכנת רק את מה שהשתנה. בלעדיהם היא מציירת מחדש ומעדכנת את ה-DOM עבור כל הפריטים, גם אם יש אלף.
7. חלופה בלי מזהה: map מעבירה גם אינדקס כארגומנט שני, ואפשר להשתמש בו כ-key. המרצה מעדיף id ייחודי.
שימו לב
1. חזרה לעולם ה-JavaScript מתוך קוד שנראה כמו HTML דורשת סוגריים מסולסלים.
2. key חייב להיות ייחודי בין הפריטים. בלעדיו זו לא שגיאה, אבל יש אזהרה והרינדור איטי יותר.
אחרי ההרצאה אפשר להציג מערך אובייקטים כרשימה ב-React עם map ו-key.
השיעור הבא בקורס: הצגת תמונה ב-React

פרקי ההרצאה: הצגת רשימה - React List

  1. 00:00

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

  2. 00:40

    רשימה כמערך של אובייקטים

  3. 02:13

    הדגמת מערך ב-JavaScript

  4. 03:11

    הכרת הפונקציה map

  5. 04:09

    חישוב חזקות עם map

  6. 05:24

    מיפוי מספרים לתגיות span

  7. 06:46

    הצגת הקינוחים עם items.map

  8. 08:27

    השגיאה Objects are not valid

תמלול ההרצאה: הצגת רשימה - React List

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

  1. 00:02

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

  2. 00:16

    נקרא לקומפוננט Desserts קינוחים. בואו נוסיף אותו וניגש ל-Desserts. בואו נניח שאין לנו צורך אפילו ב-CSS עבור הקומפוננט הזה אז כבר שלא נשכח ניפטר ממנו.

  3. 00:32

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

  4. 00:49

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

  5. 01:09

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

  6. 01:32

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

  7. 02:02

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

  8. 02:17

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

  9. 02:36

    יש לי פה מערך של, בואו נניח, מספרים, וניתן לו כמה מספרים, הנה 6, הנה 3, הנה 7, הנה 9, הנה 1, הנה 10 והנה 5. עכשיו, אם אני הולך ומציג console.log את המערך עצמו, בואו נריץ את זה רגע,

  10. 02:57

    נראה את המערך בדיוק as is, כמו שהוא קיים לנו. נרפרש והנה יש לנו פה את המספרים, בדיוק את אותם מספרים של המערך. כאשר אנחנו רוצים ב-JavaScript, לא קשור ל-react, לבצע איזושהי פעולה מסוימת על כל אחד מהפריטים של המערך ולהחזיר ממנו פריט אחר עם אותה הנוסחה יש לנו פונקציה כזאת שנקראת map,

  11. 03:29

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

  12. 03:55

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

  13. 04:09

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

  14. 04:34

    אז יש לי פה את הפריט המקורי, בואו נקרא לו num, כי זה מספר, ואני רוצה להחזיר num בריבוע, הנה החזרתי num בריבוע. אז עכשיו מאפ תרוץ על המערך המקורי, תיקח 6, תשלח לפונקציה שלנו, אנחנו נחזיר לה 6 בריבוע, 36, ואז היא תשמור את מה שהחזרנו במערכה חדש.

  15. 04:58

    ותחרוץ לשלוש, תשלח לנו שלוש, אנחנו נחזיר לה תשע, ואז היא תשמור תשע במערכה חדש וכולי וכולי, ותחזיר לנו מערך אחר, בואו נקרא לו powers חזקות של שתיים.

  16. 05:13

    בואו נוציא console.log את powers, חזור לפה ונראה שיש לנו עכשיו מערך של חזקות מהמערך המקורי. בואו נעשה עוד משהו עם הטכניקה הזאת.

  17. 05:27

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

  18. 05:56

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

  19. 06:13

    תציג לי את הקטע html הזה. ופתאום אנחנו רואים מערך שיש בו span 6 ו-span שמכיל את 3 ו-span שמכיל את 7. וזאת בדיוק הטכניקה שאנחנו משתמשים איתה בשביל לבצע את ההצגה של הליסטים.

  20. 06:33

    כמובן שיכלנו כל דבר שאנחנו רוצים למפות לעשות בפונקציית, הקונספט שלה אפשר לנו גם להחזיר כאילו html כזה אוקיי איך אנחנו משתמשים עם זה בואו נחזור בחזרה כל מה שאנחנו רוצים לעשות כאן זה להציב value בגלל זה יש לנו פה interpolation וניגש למערך שלנו נקרא items map ונמפה כל

  21. 06:58

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

  22. 07:19

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

  23. 07:49

    קצת עם איזה קו הפרטה כזה. אני רואה אייטם, אייטם, אייטם, כאשר אני רוצה לראות את ה-value עצמו. אז אנחנו צריכים להפוך את זה ל-value, ואומר שאנחנו צריכים לעשות interpolation בתוך הקטע קוד של ה-HTML הזה, כי ברגע שאנחנו התחלנו לכתוב פה html אנחנו עברנו לעולם של ה html אם אנחנו רוצים לחזור לעולם של ה java script או ליתר דיוק interpolation בשביל לשתול איזשהו value

  24. 08:25

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

  25. 08:53

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

  26. 09:09

    אתם רואים שהוא מציג לי מעין אובג'קט, אובג'קט, אובג'קט. כל מה שאני רוצה להציג זה רק את ה-Name שלו, רק את ה-Name שלו.

  27. 09:21

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

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

ההרצאה הקודמת: הסבר על Conditional Rendering

ההרצאה הבאה: הצגת תמונה ב-React

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

  • פקדי רשימה - List
  • List Dialog
  • list comprehension
  • רשימות - List - SharePoint

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

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