PracticU

רידקס - Reading Data from the Store

בלי כתוביותעם כתוביות
PracticU › קורס ריאקט - React › רידקס - Reading Data from the Store
מילון מושגים:
סטייט - המידע על מצבו הנוכחי של רכיב או אפליקציה בזמן נתון, שמשתנה ומשפיע על מה שמוצג.
צד שרת - החלק של היישום שרץ בשרת ואחראי על הלוגיקה, מסדי הנתונים והעיבוד שמאחורי הקלעים.
ראוט - הגדרה שמקשרת כתובת בקשה לקוד שמטפל בה באפליקציה. גם מסלול שדרכו עוברות חבילות ברשת.
API - ממשק תכנותי שמגדיר כיצד תוכנה אחת פונה לאחרת ומחליפה איתה נתונים ופעולות.
תנאי - ביטוי לוגי בקוד שתוצאתו אמת או שקר, וקובע אילו פקודות יתבצעו בהתאם לערכו.
מערך - מבנה נתונים שמאחסן אוסף ערכים מאותו סוג ברצף, שאפשר לגשת אליהם לפי מספר מיקום (אינדקס).
אחסון - שמירת נתונים באופן קבוע על התקנים כמו דיסקים או שירותי ענן, כך שיישמרו גם לאחר כיבוי.
סשן - פרק זמן של פעילות רציפה בין משתמש למערכת, שבו נשמר מידע על מצבו, למשל לאחר התחברות לאתר.

רידקס - Reading Data from the Store
מדוע כדאי לקרוא נתונים מ-Redux לפני שפונים שוב לשרת, ואיך בודקים אם המידע כבר נמצא ב-State הגלובלי. השיעור מראה איך נמנעים מפנייה מיותרת ל-Backend בכל כניסה חוזרת לקומפוננטה.
הבעיה והפתרון
1. הדגמת שרת איטי: ל-Backend יש ראוט נוסף, api/products/delayed, שמדמה שרת שמתעכב כשלוש שניות. הוא משמש כדי לראות בעין מתי מתבצעת פנייה לשרת.
2. אינדיקציה בזמן טעינה: מוסיפים את רכיב ה-please wait מתוך ה-shared, עם תנאי: מציגים אותו רק כל עוד אין מוצרים (undefined).
3. הבעיה: בלי בדיקה, כל חזרה לקומפוננטת המוצרים (מ-Home, מ-Support או מ-Employees) שוב מחכה שלוש שניות, אף שהמוצרים כבר נמצאים ב-State.
4. הבדיקה לפני הפנייה: עם store.getState ניגשים ל-ProductState ובודקים אם אורך מערך products הוא 0. רק אז פונים ל-Backend ושולחים את התוצאה ל-State הגלובלי, והכול בתוך if.
5. קריאה מה-State: אחרי ה-if בטוח שיש מוצרים ב-State, ולכן לוקחים אותם משם ב-store.getState().productState.products.
6. סנכרון: dispatch הוא סינכרוני, ולכן הקוד ממשיך רק אחרי שהפעולה הסתיימה.
שימו לב
- רענון הדף מוחק את כל הזיכרון, כולל Redux, ולכן אחרי רענון הפנייה לשרת מתבצעת שוב, אבל פעם אחת בלבד. שמירה ב-local storage או ב-session storage הייתה משמרת את המידע, אך היא מתאימה רק למקרים מסוימים.
- ריענון מתמיד מהשרת הגיוני רק למידע שמשתנה בתדירות גבוהה מאוד, כמו מכירה פומבית או משחקים. למוצרים שמשתנים פעם ביום או פעם בשעה עדיף להציג את מה שב-State, והמשתמש תמיד יכול לרענן את הדף.
אחרי השיעור אפשר לקרוא נתונים מה-State הגלובלי ולפנות לשרת רק כשהם עדיין לא קיימים.
השיעור הבא בקורס: שימוש ברידקס - Redux

פרקי ההרצאה: רידקס - Reading Data from the Store

  1. 00:00

    קריאת מידע מ-Redux

  2. 00:56

    בדיקת ראוט delayed של השרת

  3. 02:05

    הצגת רכיב please wait בטעינה

  4. 03:06

    הוספת conditional להצגת הטעינה

  5. 03:43

    מניעת קריאות חוזרות לשרת

  6. 04:25

    שימוש ב-Store GetState

תמלול ההרצאה: רידקס - Reading Data from the Store

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

  1. 00:02

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

  2. 00:15

    עכשיו כדאי לנו גם להכניס כאן קריאה של המידע מרידאקס. אבל למה? למה כדאי לנו להכניס כאן קריאה של המידע?

  3. 00:28

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

  4. 00:49

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

  5. 01:01

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

  6. 01:16

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

  7. 01:32

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

  8. 01:42

    זאת אומרת שאם אנחנו כאן לא גולשים לproducts as is, אם אני אכנס אליו אז אני אראה שproducts url זה הבייס בשורשר עם product בשורשר עם איזשהו סלאש, אלא אני אוסיף כאן רק לצורך בדיקה מהירה delayed בצורה כזאת.

  9. 02:02

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

  10. 02:14

    נדמה לי שבנינו משהו כזה פעם. קודם כל בואו טיפה נצמצם כאן. את זה נשים כאן ואת זה נשים פה ואת זה נשים פה ואז נוכל סתם קצת כאן לשים איזה משהו שהיה לנו פה ב-shared אולי, please wait.

  11. 02:34

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

  12. 02:55

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

  13. 03:06

    אנחנו רוצים לשים פה conditional כזה, ולהגיד לו אם יש לך משהו בסטייט, או ליתר דיוק, יש לך מוצרים, אם הם undefined, אז תציג לנו את ה-please wait הזה.

  14. 03:22

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

  15. 03:38

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

  16. 03:48

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

  17. 04:20

    בסטייט אם לא לך לשרת ותביא את המידע אם כן הכל בסדר אל תביא לי את המידע מהשרת. לשרת אתה הולך רק אם אין לי את הנתונים. עם Store.GetState.

  18. 04:34

    ה-GetState זאת פונקציה

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

ההרצאה הקודמת: רידקס - Dispatching Data to the Store

ההרצאה הבאה: שימוש ברידקס - Redux

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

  • Data Contracts
  • עבודה עם קבצים בג'אווה - Reading Properties File
  • Data Driven Test - חלק 1
  • Variables and Data Types

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

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