PracticU

העברת מידע בין קומפוננט אב לתתי-קומפוננטות שלו - ילדים ב-REACT

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

העברת מידע בין קומפוננט אב לתתי-קומפוננטות שלו - ילדים ב-REACT
קומפוננט קטן שמעוצב לשימוש חוזר לא צריך לקבוע בעצמו את הנתונים שלו. ההרצאה מראה איך קומפוננט אב (parent) מעביר מידע לקומפוננט בן (child) באמצעות props, עם TypeScript.
הרעיון
קומפוננט Sales מציג פסקה על מבצע, אבל לא מחליט מה המבצע. מי שמשתמש בו יודע באיזו קטגוריה ובאיזה אחוז הנחה מדובר. כך אפשר להציב את אותו קומפוננט כמה פעמים עם נתונים שונים (reusability).
השלבים העיקריים
1. הקומפוננט: יוצרים Sales כ-functional component בתוך תיקיית Home, עם פסקה, ומציבים אותו בדף הבית. קובץ ה-CSS נמחק כי אין בו צורך.
2. קבלת הנתונים: הפונקציה מקבלת בסוגריים אובייקט אחד, ששמו המקובל props. הוא מכיל את כל מה שהאב שלח. בשימוש: props.percent ו-props.category.
3. טיפוס עם interface: ב-TypeScript לא משתמשים ב-any. מגדירים interface בשם הקומפוננט עם הסיומת Props, למשל SalesProps. בו category מסוג string ו-percent מסוג number. זו הצהרה בלבד.
4. שליחה מהאב: באב מוסיפים אטריבוטים. אם חסר אחד, מופיעה שגיאה. למספר צריך לשלוח את הערך בסוגריים מסולסלים, percent={20}, כי אחרת הוא מחרוזת.
5. שדות אופציונליים: סימן שאלה בהגדרת השדה ב-interface אומר שהאב לא חייב לשלוח אותו. אז אפשר לעשות conditional rendering ולהציג פסקה שונה אם הקטגוריה חסרה, למשל "על כל המוצרים".
6. ערכי ברירת מחדל: ב-interface אי אפשר להקצות ערכים. מגדירים אותם עם Sales.defaultProps שמקבל אובייקט, למשל קטגוריה candies ואחוז 10. כשיש ערכי ברירת מחדל, אין צורך בתנאי.
7. יצירה אוטומטית: בכלי ה-snippet מוסיפים לפקודת יצירת הקומפוננט את הדגל --props, והכלי מייצר interface ופונקציה מוכנים. אפשר גם בצורה מקוצרת עם מקף אחד.
שימו לב
1. מקף כפול הוא הפקודה המלאה, ומקף יחיד ואות אחת הוא הקיצור שלה, אם קיים.
2. המרצה בודק כל וריאציה: הכול נשלח, בלי קטגוריה, ובלי ערכי ברירת מחדל.
אחרי ההרצאה אפשר לבנות קומפוננט שמקבל נתונים מהאב, עם טיפוסים, שדות אופציונליים וערכי ברירת מחדל.
השיעור הבא בקורס: העברת מידע בין קומפוננטות בעזרת prop ב-component class בריאקט

פרקי ההרצאה: העברת מידע בין קומפוננט אב לתתי-קומפוננטות שלו - ילדים ב-REACT

  1. 00:00

    הקשר בין Parent ל-Child

  2. 00:37

    שימוש חוזר בקומפוננטות

  3. 02:08

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

  4. 03:30

    הצבת Sales בדף הבית

  5. 04:09

    קבלת המידע באובייקט props

  6. 05:08

    שליחת אחוז וקטגוריה מה-Parent

  7. 05:45

    הגדרת interface ל-props ב-TypeScript

תמלול ההרצאה: העברת מידע בין קומפוננט אב לתתי-קומפוננטות שלו - ילדים ב-REACT

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

  1. 00:02

    אוקיי, אנחנו ממשיכים לכלי הבסיסי הבא של React. הכלי הבסיסי הבא מאפשר לנו להעביר מידע מה-parent קומפוננט ל-child קומפוננט.

  2. 00:18

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

  3. 00:34

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

  4. 00:52

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

  5. 01:21

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

  6. 01:41

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

  7. 02:06

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

  8. 02:27

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

  9. 02:58

    מי ששם אותו אצלו מחליט איזה מבצעים הוא רוצה לספק אז הנה ה-functional component שלנו שנקרא sales ואני רוצה שתהיה לי פה איזושהי פסקה, ויהיה כתוב לי פה איזשהו Sale, איזה מבצע שיש לנו עכשיו, והמבצע שלנו, אני לא רוצה להחליט שהמבצע שלנו הוא מבצע

  10. 03:20

    על כל המשקאות בחנות, וכמה אחוז אני נותן הנחה כרגע. אז איך אנחנו מעבירים את המידע מה-Parent ל-Chide? קודם כל בואו ניגש רגע ונשים אותו, יש לנו את הsales הנה הוא בוא נראה שהוא הביא לנו אותו הנה הוא פה ובוא נראה רגע שהוא רק מציג אותו ואנחנו רואים sale איזה מבצעים יש עכשיו

  11. 03:51

    מבצע מכירות או משהו כזה דרך אגב אני לא רואה שיש לי צורך רגע בcss אז אני אוריד את הcss שיהיה ממש סימפל גם פה אני לא צריך אותו ופה אני רוצה רק שהוא יופיע לי כbox בואו נראה רגע מה מה הוא מציג לנו, הנה הוא נמצא פה, טוב אז איך אנחנו ב-react מקבלים מידע מה-parent אלינו כאשר אנחנו child, מה שאנחנו צריכים לבצע זה לקבל אובייקט אחד

  12. 04:29

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

  13. 05:03

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

  14. 05:34

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

  15. 05:57

    any זה משהו שאני רוצה להימנע ממנו בטייפ סקריפט מפני שיש לי פה טיפוסים לכן מה שאנחנו רוצים לעשות זה להגדיר טיפוס נתונים חדש עבור אותו props עושים את זה על ידי interface ונהוג לקרוא לו השם של הקומפוננט sales עם הסיומת props עכשיו הגדרתי טיפוס

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

ההרצאה הקודמת: יצירת Class Component

ההרצאה הבאה: העברת מידע בין קומפוננטות בעזרת prop ב-component class בריאקט

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

  • העברת מידע מ-Controller ל-View
  • אבטחת מידע
  • העברת קבצים עם WinScp
  • העברת Netcat ל-Windows 10

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

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