
ProductList. כדי שכל האתר יקבל, עוטפים את הרכיב העליון ביותר: ה-Layout, ה-Browser Router או האינדקס. כאן עוטפים מעל ה-Provider של ה-store.ThemeContext יש Provider, בדומה ל-Provider של React Redux. הוא עוטף את הקומפוננטות ומפיץ את האובייקט. חשוב לייבא ThemeContext מקובץ ה-state ולא מ-Styled Components.value של ה-Provider נותנים את האובייקט שמפיצים, כאן appTheme.createContext משמש כשמשתמשים באובייקט מחוץ לעץ של ה-Provider. המרצה מחזיר אותו ל-null בכוונה, כדי להראות שהוא לא קשור להפצה. אפשר להשאיר שם את appTheme, למשל לצורכי דיבאגינג.הטקסט המלא של הדקות הראשונות בהרצאה «ריאקט - Propagating a Context Object» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
בית אנחנו רוצים להפיץ את האובייקט הזה במורד עץ הקומפוננטות בעזרת הקומפוננטה הזאת שנוצרה כאן. אז אם יש לנו המון המון קומפוננטות במערכת ואנחנו רוצים רק בחלק מהן באיזשהו עץ פנימי מסוים להפיץ את זה, אז אנחנו צריכים לעטוף רק את אותו העץ.
בוא נניח שהייתי רוצה בכל הקומפוננטות ששייכות למוצרים להפיץ את אותו Team אז הייתי צריך לגשת לקומפוננטה הכי עליונה שקשורה למוצרים ורק בתוכה לשים נניח את התגית הזאת.
אותה קומפוננטה כמובן הייתה איפשהו פה נניח. ניגש לפרודקט ליסט אולי היינו הולכים לפרודקט ליסט ועוטפים את הקומפוננטה הזאת אם הייתי רוצה שרק מי שנמצא בתוכה יקבל את זה.
אם אני רוצה שכל האתר ישתמש באותו אובייקט גלובלי, אז אני רוצה לעטוף את הדבר הכי הכי הכי עליון. זה מן הסתם ה-Layout.
אותו Layout, כאן אנחנו יכולים לעטוף אותו. לעטוף את ה-Dive הזאת, או לעטוף את ה-Browse Router. אפשר במקום זה לגשת ואפילו לעטוף את האינדקס, כאן.
בדיוק כמו שהיה לנו ב-Store, פרוביידר זה ממש אותו הקונספט של קונטקסט. זה בעצם הפיץ את הסטור במורד עץ הקומפוננטות לכל הקומפוננטות שבתוכו. אז אנחנו גם רוצים, אנחנו יכולים לעשות את זה כאן, אנחנו יכולים לעשות את זה כאן, בואו אפילו נעשה את זה כאן מעל הפרוביידר של הסטור, ויהיה לנו כאן את ה-team-context שלנו,
שיש שניים, ואנחנו רוצים אותו מפה, היא זה שלנו, אני רואה שיש עוד אחד של Styled Components, אנחנו רוצים את זה, ונסגור אותו כאן, Team Context.
כעת מה שהוא מבקש מאיתנו, הוא אומר לנו, תשמעו, אתם רוצים להפיץ משהו, אני רק מעטפת כזאת, בתוך ה-Team Context יש משהו שנקרא Provider,