PracticU

גישה ישירה ל-DOM ב-React

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

גישה ישירה ל-DOM ב-React
בדרך כלל ב-React עובדים דרך הרכיבים שלה ולא ניגשים ל-DOM, אבל לפעמים צריך פונקציות של ה-DOM שאין להן תחליף ב-React. ההרצאה מראה איך עושים זאת עם Ref, על נגן שמע.
הדוגמה
class component בשם Audio עם תגית audio, שיר שנוסף לתיקייה assets/audio, ושלושה כפתורים משלנו: play, pause ו-stop, במקום הכפתורים המובנים של הדפדפן. הפונקציות play ו-pause שייכות לאלמנט עצמו, ולכן צריך גישה ישירה אליו.
השלבים העיקריים
1. טעינת הקובץ: מייבאים את השיר מנתיב יחסי ל-assets/audio ושמים ב-src. כדי ש-React תכיר סיומת mp3, מוסיפים בקובץ react-app-env.d.ts הצהרת declare module לכל קובץ .mp3.
2. ייבוא של Audio: בקוד חיפש המרצה את הקומפוננט ולבסוף הגדיר את Audio בעצמו, כי כבר קיים אובייקט בשם הזה.
3. בדיקה עם controls: התכונה controls נותנת את הנגן הרגיל, ומאשרת שהשיר נטען. autoPlay לא הוצע על ידי העורך.
4. כפתורים משלנו: מסירים את controls ומוסיפים שלושה button, מעוצבים בלי מסגרת, עם רקע שקוף, cursor: pointer ושוליים של 5px.
5. יצירת ה-ref: בשדה במחלקה מגדירים audioRef מסוג RefObject<HTMLAudioElement> וממלאים אותו עם createRef של React. הוא ריק בהתחלה.
6. קישור לאלמנט: בתגית audio כותבים ref={this.audioRef}. כך האובייקט מצביע על האלמנט האמיתי ב-DOM.
7. שימוש: האלמנט האמיתי נמצא ב-this.audioRef.current. מפעילים עליו play() ו-pause(). כפתור stop קורא ל-load(), שטוען מחדש, ולכן מתחיל מההתחלה.
8. קיצור: כשהפעולה היא שורה אחת, כותבים arrow function ישירות ב-onClick ולא פונקציה נפרדת.
שימו לב
1. הגישה הישירה ל-DOM היא מקרה נדיר.
2. ref הוא הצבעה לאובייקט האמיתי. האובייקט עצמו נמצא ב-current.
אחרי ההרצאה אפשר לגשת לאלמנט DOM מתוך קומפוננט ולהפעיל עליו פונקציות שאין להן שקילה ב-React.
השיעור הבא בקורס: פונקציות Lifecycle Hooks

פרקי ההרצאה: גישה ישירה ל-DOM ב-React

  1. 00:00

    מתי ניגשים ישירות ל-DOM

  2. 00:48

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

  3. 01:29

    תגית audio וקובץ שיר ב-assets

  4. 03:05

    הגדרת מודול לקובצי mp3

  5. 04:29

    השמעת השיר עם controls

  6. 06:20

    לחצני Play, Pause ו-Stop משלנו

  7. 07:39

    הפעלת פונקציה בלחיצה על Play

  8. 09:03

    יצירת Ref לרכיב האודיו

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

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

  1. 00:02

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

  2. 00:43

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

  3. 01:11

    כאשר אנחנו מתעסקים עם אודיו, יש לנו כל מיני פונקציות של JavaScript שקיימות לנו בדום, אבל React לא נותנת לנו את התחליף לפונקציות האלה.

  4. 01:22

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

  5. 01:36

    אז איך זה מתבצע? בואו נסתכל רגע על הרכיב הזה אודיו וניקח תגית אודיו של html קיימת תגית כזאת ואנחנו רוצים לתת לה פה איזשהו src איזשהו סונג מסוים אז יש לנו כאן בואו ניקח רגע את assets וב-assets בואו נפתח תיקייה שנקרא לה אודיו בצורה כזאת ובתוך תיקיית audio אני רוצה לגרור

  6. 02:15

    איזשהו שיר ששמתי פה אז הנה שמתי אותו עכשיו בתוך תיקיית audio אפשר עם זה להיפטר והשיר נקרא fade into you ואנחנו רוצים לשים אותו פה import song from מה הנתיב שלנו אז אני עולה שתי נקודות תקיעה הכוונה וולה או תקיעה וולה או תקיעה ומגיע לאסץ ומגיע לאודיו ומגיע לפייד אינטו נקודה mp3. עכשיו יש פה איזשהו אישיו אחר שאנחנו שנייה צריכים לפתור והוא לא קשור לנושא

  7. 03:10

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

  8. 03:48

    איזה קובץ מסוים עם סיומת חדשה שריאקט לא מכירה אנחנו יכולים לבוא לקובץ מיוחד וזה הקובץ הזה שנמצא פה React App Environment D ולבנות כאן הגדרה declare של מודול חדש שהוא כל קובץ עם סיומת mp3. עכשיו לימדנו את ריאקט שיש משהו שנקרא קובץ עם סיומת mp3. בואו נחזור לכאן ונפתרה הבעיה מכיר פתאום סיומות mp3 איזשהו פיצ'ר שאנחנו

  9. 04:29

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

  10. 05:00

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

  11. 05:17

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

  12. 05:32

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

  13. 06:03

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

  14. 06:20

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

  15. 06:48

    ואוז וסטופ היא שלי הרבה יותר מרשים מהקונטולים שלהם, סתם, אני צוחק, אבל זה מה שאני רוצה, זו ההוראה שקיבלתי. בואו רגע נלך לכאן ונגדיר ש-audio חצותן, יש לו קורסור פוינטר, יש לו background color transparent, יש לו border none ויש

  16. 07:23

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

  17. 07:34

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

  18. 07:53

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

  19. 08:19

    למה הוא צועק עליי? אוי, שאני נמצא ב-class component. טוב, אז בואו נבנה אותה כ-private play שווה בצורה כזאת ואז פה אני רושם dist.play והנה יש לנו פה את הפונקציה.

  20. 08:38

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

  21. 09:15

    אז מה ריאקט נותנת לנו? ריאקט נותנת לנו אובייקט, אני אגדיר אותו פה באזור הגלובלי, פרייבט. אני אקרא לו סתם בשם, אני יכול לקרוא לו בכל שם, אני אקרא לו Audio Reference כי זה לא האובייקט הזה, זה רפרנס אליו, אז אני אקרא לו Audio Reference, הסוג שלו זה Ref Object,

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

ההרצאה הקודמת: קליטת מידע מהמשתמש בריאקט React Two Way binding

ההרצאה הבאה: פונקציות Lifecycle Hooks

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

  • DOM
  • הרשאות גישה - Modifiers
  • קבלת גישה למחשב הקורבן
  • הגבלת גישה לשרת Apache לפי כתובת IP

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

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