תיאור ה-UI
React היא ספריית JavaScript לעיבוד ממשקי משתמש (UI). ממשק משתמש בנוי מיחידות קטנות כמו לחצנים, טקסט ותמונות. תגובה מאפשרת לך לשלב אותם לכדי רכיבים ניתנים חוזרים, ניתנים לקינון. מאטרי אינטרנט ועד אפליקציות טלפון, ניתן לפרק כל דבר על המסך לרכיבים. תגיב.
In this chapter
- כיצד לכתוב את הרכיב ה-React הראשון שלך
- מתי וכיצד ליצור קבצים מרובי רכיבים
- כיצד להוסיף סימון ל-JavaScript עם JSX
- להשתמש בסוגרים מסולסלים עם JSX כדי לגשת לפונקציונליות שלך JavaScript מהרכיבים
- כיצד להגדיר רכיבים עם props
- כיצד לעבד רכיבים באופן מותנה
- כיצד לעבד מספר רכיבים בו-זמנית
- כיצד מבלבול באגים על ידי שמירה על רכיבים טהורים
- מדוע הבנת ממשק המשתמש שלך כעצים היא שימושית
הרכיב הראשון שלך
ישומי React בנויים מחלקים מבודדים של ממשק משתמש הנקראים רכיבים. רכיב React הוא פונקציית JavaScript אתה יכול לפזר עם סימון. רכיבים יכולים להיות קטנים כמו כפתור, או גדולים כמו עמוד שלם. הנה רכיב ‘גלריה’ המציג שלושה רכיבי ‘פרופיל’:
function Profile() { return ( <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" /> ); } export default function Gallery() { return ( <section> <h1>Amazing scientists</h1> <Profile /> <Profile /> <Profile /> </section> ); }
ייבוא וייצוא רכיבים
אתה יכול להצהיר על רכיבים רבים בקובץ אחד, אבל קבצים גדולים יכולים להיות קשים לניווט. כדי לפתור זאת, אתה יכול לייצא רכיב לקובץ משלו, ולאחר מכן לייבא את הרכיב הזה מקובץ אחר:
import Profile from './Profile.js'; export default function Gallery() { return ( <section> <h1>Amazing scientists</h1> <Profile /> <Profile /> <Profile /> </section> ); }
Ready to learn this topic?
קרא את ייבוא וייצוא רכיבים כדי ללמוד כיצד לפצל רכיבים לקבצים משלהם.
Read Moreכתיבת סימון עם JSX
כל הרכיב React הוא פונקציית JavaScript שעשויה להכיל סימון ש-React מעבד לדפדפן. רכיבי הגיבו משתמשים בסיומת תחביר הנקראת JSX כדי להציג את הסימון הזה. JSX נראה הרבה כמו HTML, אבל הוא קצת יותר מחמיר ויכול להציע מידע דינמי.
אם נדביק סימון HTML קיים ברכיב React, זה לא תמיד יעבוד:
export default function TodoList() { return ( // This doesn't quite work! <h1>Hedy Lamarr's Todos</h1> <img src="https://i.imgur.com/yXOvdOSs.jpg" alt="Hedy Lamarr" class="photo" > <ul> <li>Invent new traffic lights <li>Rehearse a movie scene <li>Improve spectrum technology </ul>
אם יש לך HTML קיים כזה, אתה יכול לתקן אותו באמצעות ממיר:
export default function TodoList() { return ( <> <h1>Hedy Lamarr's Todos</h1> <img src="https://i.imgur.com/yXOvdOSs.jpg" alt="Hedy Lamarr" className="photo" /> <ul> <li>Invent new traffic lights</li> <li>Rehearse a movie scene</li> <li>Improve spectrum technology</li> </ul> </> ); }
JavaScript ב-JSX עם פלטה מתולתת
JSX יכול לכתוב סימון דמוי HTML בתוך קובץ JavaScript, תוך שמירה על רינדור ההיגיון והתוכן באותו מקום. לפעמים תרצה להוסיף קצת הגיון JavaScript או להתייחס למאפיין דינמי בתוך הסימון הזה. בstate זה, אתה יכול להשתמש בסוגרים מסולסלים ב-JSX שלך כדי “לפתוח חלון” ל-JavaScript:
const person = { name: 'Gregorio Y. Zara', theme: { backgroundColor: 'black', color: 'pink' } }; export default function TodoList() { return ( <div style={person.theme}> <h1>{person.name}'s Todos</h1> <img className="avatar" src="https://i.imgur.com/7vQD0fPs.jpg" alt="Gregorio Y. Zara" /> <ul> <li>Improve the videophone</li> <li>Prepare aeronautics lectures</li> <li>Work on the alcohol-fuelled engine</li> </ul> </div> ); }
Ready to learn this topic?
קרא את [JavaScript ב-JSX עם פלטה מתולתת](/learn/javascript-in-jsx-with-curly- braces) כדי ללמוד איך לגשת לנתוני JavaScript מ-JSX.
Read Moreהעברת props לרכיב
רכיבי React users ב-props כדי לתקשר עם זה. כל רכיב הורה יכול להעביר מידע מסוים לרכיבי על ידי מתן props. props יכולים להכיל תכונות HTML, אבל להעביר דרכם כל ערך JavaScript, כולל אובייקטים, מערכים, פונקציות אפילו JSX!
import { getImageUrl } from './utils.js' export default function Profile() { return ( <Card> <Avatar size={100} person={{ name: 'Katsuko Saruhashi', imageId: 'YfeOqp2' }} /> </Card> ); } function Avatar({ person, size }) { return ( <img className="avatar" src={getImageUrl(person)} alt={person.name} width={size} height={size} /> ); } function Card({ children }) { return ( <div className="card"> {children} </div> ); }
עיבוד מותנה
הרכיבים שלך יצטרכו מסופקים שונים. ב-React, אתה יכול לבצע עיבוד מותנה של JSX באמצעות תחביר JavaScript כמו הצהרות if, && ו? : מפעילים.
בדוגמה זו, האופרטור ’&&’ של JavaScript שימוש לעיבוד מותנה של סימן ביקורת:
function Item({ name, isPacked }) { return ( <li className="item"> {name} {isPacked && '✔'} </li> ); } export default function PackingList() { return ( <section> <h1>Sally Ride's Packing List</h1> <ul> <Item isPacked={true} name="Space suit" /> <Item isPacked={true} name="Helmet with a golden leaf" /> <Item isPacked={false} name="Photo of Tam" /> </ul> </section> ); }
רשימות עיבוד
קרוב תרצה להציג מספר רכיבים דומים מאוסף נתונים. אתה יכול להשתמש ב-‘filter()’ ו-‘map()’ של JavaScript עם React כדי לסנן ולהפוך את המערך שלך לרכיבים.
עבור כל פריט מערך, תפרט ‘מפתח’. בדרך כלל, תרצה להשתמש במזהה ממסד עבור מפתח. קשים מסוגלים ל-React לעקוב אחר מקומו של כל פריט ברשימה גם אם הרשימה משתנה.
import { people } from './data.js'; import { getImageUrl } from './utils.js'; export default function List() { const listItems = people.map(person => <li key={person.id}> <img src={getImageUrl(person)} alt={person.name} /> <p> <b>{person.name}:</b> {' ' + person.profession + ' '} known for {person.accomplishment} </p> </li> ); return ( <article> <h1>Scientists</h1> <ul>{listItems}</ul> </article> ); }
Ready to learn this topic?
קרא את רשימות עיבוד כדי ללמוד כיצד לעבד רשימה של רכיבים וכיצד לבחור מפתח.
Read Moreשמירה על טהרת הרכיבים
חלק פונקציות JavaScript הן טה. פונקציה טהורה:
- ** דואג לעניינים שלו.** זה לא משנה אובייקטים או משתנים שהיו קיימים לפני שנקרא.
- אותן כניסות, אותו פלט. בהינתן אותן כניסות, פונקציה טהורה צריכה תמיד להחזיר את אותה תוצאה.
על ידי כתיבת הרכיבים שלך כפונקציות טהורות בלבד, אתה יכול למנוע מחלקה שלמה של באגים מביכים והתנהגות בלתי צפויה ככל שבסיס הקוד שלך גדל. הנה דוגמה לרכיב לא טהור:
let guest = 0; function Cup() { // Bad: changing a preexisting variable! guest = guest + 1; return <h2>Tea cup for guest #{guest}</h2>; } export default function TeaSet() { return ( <> <Cup /> <Cup /> <Cup /> </> ); }
אתה יכול להפוך את הרכיב הזה לטהור על ידי העברת props במקום שינוי משתנה קיים:
function Cup({ guest }) { return <h2>Tea cup for guest #{guest}</h2>; } export default function TeaSet() { return ( <> <Cup guest={1} /> <Cup guest={2} /> <Cup guest={3} /> </> ); }
Ready to learn this topic?
קרא את Keeping Components Pure כדי ללמוד כיצד לכתוב רכיבים כפונקציות טהורות וניתנות לחיזוי.
Read Moreממשק המשתמש שלך כעץ
תגובה משתמש בצים כדי לדגמן את היחסים בין רכיבים ומודולים.
עץ רינדור React הוא ייצוג של יחסי ההורה והילד בין רכיבים.


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


עץ תלות מודול לדוגמה.
עץ תל כלי משמש כדרך בנייה כדי לאגד את כל הקוד ה-JavaScript הרלונטי עבור הלקוח להורדה ולעיבוד. גודל חבילה גדול מחזיר את חוויית המשתמש עבור אפליקציות React. הבנת עץ התלות של המודול מועיל לאיתור באגים מסוג זה.
Ready to learn this topic?
קרא את ממשק המשתמש שלך כעץ כדי ללמוד כיצד ליצור עיבוד ועצי תלות במודול עבור אפליקציית.
Read Moreמה הלאה?
עברו אל הרכיב הראשון שלך כדי להתחיל לקרוא את זה עמוד אחר עמוד!
או, אם אתה כבר מכיר את הנושאים האלה, למה שלא תקרא על הוספת אינטראקטיביות?