PracticU

הצגת תמונה בריאקט

בלי כתוביותעם כתוביות
PracticU › קורס ריאקט - React › הצגת תמונה בריאקט
מילון מושגים:
טופס - אזור בממשק שבו המשתמש מזין נתונים בשדות ושולח אותם, למשל טופס הרשמה או התחברות.
סטייט - המידע על מצבו הנוכחי של רכיב או אפליקציה בזמן נתון, שמשתנה ומשפיע על מה שמוצג.
אירוע - התרחשות שהמערכת מזהה ויכולה להגיב לה, כמו לחיצת עכבר, הקשה או סיום פעולה.
JavaScript - שפת תכנות שרצה בעיקר בדפדפן ומוסיפה אינטראקטיביות לדפי אינטרנט. רצה גם בצד השרת באמצעות Node.js.
React - ספריית JavaScript לבניית ממשקי משתמש מבוססי רכיבים, שפותחה על ידי פייסבוק.
Base64 - שיטת קידוד שממירה נתונים בינאריים לטקסט מתווים מודפסים, כדי להעבירם בבטחה בערוצים טקסטואליים.
תגית - סימון בקוד, למשל ב-HTML, שתוחם רכיב ומגדיר את תפקידו או תכונותיו. גם תווית לסימון וקיטלוג פריטים.
CSS - שפת עיצוב שקובעת את המראה של דפי אינטרנט: צבעים, גופנים, מיקום וסידור הרכיבים.

הצגת תמונה בריאקט
כדי שהמשתמש יראה תצוגה מקדימה קטנה של התמונה שבחר בטופס, לפני שהיא נשלחת לשרת, משתמשים ב-FileReader וב-state. התצוגה היא רק עזר למשתמש ולא קשורה לשליחה.
השלבים
1. אירוע בחירה: בתיבת הקובץ נרשמים ל-onChange ומחברים פונקציה בשם previewHandler, שמקבלת SyntheticEvent.
2. לקיחת הקובץ: ממירים את args.target ל-HTMLInputElement, ולוקחים את הקובץ הראשון מ-files.
3. FileReader: יוצרים new FileReader(). זה אובייקט JavaScript רגיל, ללא קשר ל-React או לשרת, שיודע לקרוא קובץ שהמשתמש בחר.
4. קריאה: קוראים ל-readAsDataURL עם הקובץ. כשהקריאה מסתיימת מופעל האירוע onload, ולכן את ההגדרה שלו כדאי לכתוב לפני הקריאה.
5. התוצאה: ב-event.target.result (בתוך ה-FileReader) מתקבלת מחרוזת שמתחילה ב-data:image ובהמשך base64, שמייצגת את התמונה כטקסט. ממירים אותה ל-string.
6. שמירה ב-state: const [imageSource, setImageSource] = useState<string>(""), וקוראים ל-setImageSource עם המחרוזת כדי ש-React תרנדר מחדש.
7. הצגה: מוסיפים תג img ומציבים ב-src את imageSource.
עיצוב
ב-CSS נותנים לתמונה רוחב וגובה של 50 פיקסלים, מסגרת ו-position: absolute, ומזיזים אותה עם transform: translate. אם לא רוצים להציג את שם הקובץ, אפשר להגדיר צבע transparent לתיבת input type=file.
אחרי ההרצאה הטופס מציג תמונה ממוזערת של הקובץ שנבחר, ואפשר להמשיך לשלוח אותו לשרת.
השיעור הבא בקורס: ולידציה בריאקט - React Validation

פרקי ההרצאה: הצגת תמונה בריאקט

  1. 00:00

    הצגת תצוגה מקדימה של התמונה

  2. 00:37

    פונקציית previewHandler

  3. 01:34

    קריאת הקובץ עם FileReader

  4. 02:45

    אירוע onload של FileReader

  5. 04:01

    קבלת התמונה כ-base64

  6. 05:16

    ניפוי שגיאות בהצגת התמונה

תמלול ההרצאה: הצגת תמונה בריאקט

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

  1. 00:02

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

  2. 00:22

    איך עושים את זה? בואו נחזור בחזרה לטופס שלנו. יש לנו פה את התיבה הזאת. ברגע שהמשתמש מבצע בחירה מופעל אירוע on-change.

  3. 00:35

    בואו ניקח את האירוע הזה ונירשם לאיזושהי פונקציה שלנו ששם אנחנו בעצם רוצים לקרוא את התמונה ולהציג אותה. נקרא לזה previewHandler.

  4. 00:47

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

  5. 01:04

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

  6. 01:16

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

  7. 01:24

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

  8. 01:44

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

  9. 01:52

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

  10. 02:21

    יש לו פונקציה שנקראת read as data url פונקציה הזאת מקבלת את הקובץ שאתם רוצים לקרוא בינארי לארג' אובייקט זה בעצם קובץ בינארי כלשהו אנחנו שנייה לפני זה בשבוע ה-32 קראנו אותו, זה ה-image, וה-file reader יודע פשוט לקרוא את הקובץ הזה ולתת לנו את התוצר שלו אחרי שהוא קרא אותו.

  11. 02:45

    איך הוא נותן לנו את התוצר שלו? יש לו, פייל רידר, יש לו אירוע שנקרא onload, ברגע שהוא סיים לקרוא את אותו קובץ, אז הוא קורא לפונקציה, onload זה בעצם אירוע, ונותן לפונקציה שלנו את הקובץ שהוא קרא.

  12. 03:03

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

  13. 03:23

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

  14. 03:34

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

  15. 04:00

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

  16. 04:34

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

  17. 05:09

    פרוגרס איבנט ואז בואו נראה מה הוא אומר לנו שיש לו, הנה הטארגט והוא נותן לנו כאן את הריזולט, הוא לא נותן לי את הריזולט, טוב בואו נגיד לו שזה, מה זה היה הריזולט?

  18. 05:27

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

  19. 05:55

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

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

ההרצאה הקודמת: שליחת תמונה לשרת בריאקט - React Forms

ההרצאה הבאה: ולידציה בריאקט - React Validation

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

  • מצלמה - חלק 1 - צילום תמונה
  • הוספת תמונה למוצר
  • הצגת popover באייפון
  • הצגת טבלה שלמה

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

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