PracticU

רידקס - יצירת Middleware

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

רידקס - יצירת Middleware
מהו Middleware ב-Redux ואיך בונים אחד בעצמנו: פונקציה שמופעלת באמצע, בכל פעם שמבצעים dispatch (ולא בקריאת מידע בלבד).
איך זה עובד
Middleware יכול לקרוא את הפעולה, לשנות את המידע שנכנס, להדפיס אותו, ואפילו לא לאשר את ה-dispatch. אם אינו קורא ל-next, Redux לא ממשיך.
השלבים העיקריים
1. הקובץ והפונקציה: בתיקיית Redux יוצרים קובץ middleware.ts ומייצאים ממנו פונקציה בשם countActions. הוגדר בה counter שמתחיל ב-0 וסופר כמה פעולות עברו.
2. שלוש שכבות: הפונקציה מקבלת את ה-store ומחזירה פונקציה שמקבלת את next, וזו מחזירה פונקציה שמקבלת את אובייקט ה-action (כאן any). התחביר נראה מוזר, אבל כך בונים Middleware.
3. לפני ואחרי next: בקריאה ל-next(action) Redux מבצע את ה-dispatch. לפניה store.getState() מחזיר את ה-State הקודם, ואחריה את החדש, אחרי ה-Reducer.
4. חיבור ל-store: כארגומנט שני ב-createStore שולחים applyMiddleware ובתוכו את הפונקציה. אפשר לשלב כמה Middlewares.
5. בדיקה ראשונה בקונסול: הדפסה של הפעולה (הסוג וה-payload), ה-State הקודם וה-State הבא. במוצרים רואים שה-State עבר מ-ללא מוצרים לעם מוצרים. בהוספת מוצר המספר זהה בשני המצבים, כי ההעתקה היא shallow ולא deep.
6. גרסה סופית: הפונקציה מגדילה את counter ב-1 ומדפיסה בעזרת template string את סוג הפעולה הנוכחי ואת Total Actions.
תוצאה
טעינת מוצרים הדפיסה Total Actions 1, ועובדים 2. כניסה חוזרת למוצרים בלי dispatch לא הדפיסה דבר. מחיקת מוצר הדפיסה Total Actions 3.
אחרי השיעור אפשר לבנות Middleware משלנו ולשלב אותו ב-store, למשל ללוג, לשליחת סטטיסטיקות לשרת או לניקוי מידע לפני כניסתו ל-Redux.
השיעור הבא בקורס: רידקס - Using Redux Logger Middleware

פרקי ההרצאה: רידקס - יצירת Middleware

  1. 00:00

    מהו Middleware ברידקס

  2. 00:59

    בניית custom middleware

  3. 01:34

    הגדרת counter למידלוור

  4. 02:10

    הפונקציה next של Middleware

  5. 02:50

    קבלת אובייקט האקשן

  6. 03:27

    state לפני ואחרי ה-reducer

  7. 04:11

    הדפסת האקשן לקונסול

תמלול ההרצאה: רידקס - יצירת Middleware

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

  1. 00:02

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

  2. 00:30

    אלא תמיד כאשר מבצעים dispatch ורק כאשר מבצעים dispatch המידלוור מופעלת באמצע ואומרת אני יכולה לבצע משהו מה אתה רוצה שאני אבצע כל פעם שמבצעים dispatch האם אתה רוצה שאני אשנה את המידע אולי שאתה מכניס לרידאקס האם אתה רוצה שאני אקרא אותו האם אתה רוצה שאני אדפיס אותו על הקונסול מה אתה רוצה שאני אעשה איתו

  3. 00:54

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

  4. 01:12

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

  5. 01:31

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

  6. 01:45

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

  7. 02:04

    middleware מחזירה פונקציה. הפונקציה הראשונה שאנחנו בונים מקבלת את ה-store. כלומר, Redux הולכת לקרוא לפונקציה הזאת ולתת לנו את ה-store.

  8. 02:15

    היא תקבל בחזרה את הפונקציה שלנו, תקרא לה ותביא לה פונקציה, אנחנו קוראים לה next, שאנחנו חייבים לקרוא לה איפה שהוא פה, אחרת Redux לא תמשיך ותבצע את ה-Dispatch.

  9. 02:35

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

  10. 02:44

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

  11. 03:01

    הפונקציה הזאת מקבלת את אובייקט האקשן. כרגע הוא יכול להיות call action אז אני אשתמש ב-any.

  12. 03:09

    כאן בפונקציה הפנימית אנחנו מבצעים את הקוד שלנו, כאשר אנחנו חייבים, אם אנחנו רוצים לאשר בעצם את ה-dispatch, אנחנו חייבים לקרוא ל-next ולשלוח את האקשן.

  13. 03:22

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

  14. 03:39

    לפני קריאה ל-next, here, store.getState returns the previous state before calling the reducer. אחרי זה store.getState returns the next state after calling the reducer כי הרי הstate השתנה יש איזשהו dispatch אז רק בשביל לבדוק כרגע נדפיס על הקונסול את האקשן ונדפיס על הקונסול את store.getState לפני ואחרי רק בשביל לראות מה בעצם

  15. 04:21

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

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

ההרצאה הקודמת: ספריית react-redux בתוך FC

ההרצאה הבאה: רידקס - Using Redux Logger Middleware

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

  • יצירת Pass-Through Middleware
  • Express Middleware

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

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