הקומפוננטה הראשונה שלכם

רכיבים הם אחד ממושגי הליבה של React. הם הבסיס שעליו אתה בונה ממשקי user (UI), מה שהופך אותם למקום המושלם להתחיל את המסע שלך ב-React!

You will learn

  • מהו רכיב
  • איזה תפקיד ממלאים רכיבים ביישום React
  • איך לכתוב את הרכיב React הראשון שלך

רכיבים: אבני הבניין של ממשק המשתמש

באינטרנט, HTML מאפשר לנו ליצור מסמכים מובנים עשירים עם ערכת התגים המובנית שלו כמו <h1> ו-<li>:

<article>
<h1>My First Component</h1>
<ol>
<li>Components: UI Building Blocks</li>
<li>Defining a Component</li>
<li>Using a Component</li>
</ol>
</article>

סימון זה מייצג את המאמר <article>, את הכותרת שלו <h1>, ותוכן עניינים (מקוצר) כרשימה מסודרת <ol>. סימון כזה, בשילוב עם CSS עבור סגנון, ו-JavaScript עבור אינטראקטיביות, נמצא מאחורי כל סרגל צד, דמות, מודאל, תפריט נפתח - כל פיסת ממשק משתמש שאתה רואה באינטרנט.

React מאפשר לך לשלב את הסימון שלך, CSS ו-JavaScript ל”רכיבים” מותאמים אישית, רכיבי ממשק משתמש ניתנים לשימוש חוזר עבור האפליקציה שלך. ניתן להפוך את קוד תוכן העניינים שראית למעלה לרכיב <TableOfContents /> שתוכל לעבד בכל דף. מתחת למכסה המנוע, זה עדיין use אותם תגיות HTML כמו <article>, <h1> וכו’.

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

<PageLayout>
<NavigationHeader>
<SearchBar />
<Link to="/docs">Docs</Link>
</NavigationHeader>
<Sidebar />
<PageContent>
<TableOfContents />
<DocumentationText />
</PageContent>
</PageLayout>

ככל שהפרויקט שלך יגדל, אתה תבחין שניתן להרכיב רבים מהעיצובים שלך על ידי שימוש חוזר ברכיבים שכבר כתבת, לזרז את הפיתוח שלך. ניתן להוסיף את תוכן העניינים שלנו לעיל לכל מסך עם <TableOfContents />! אתה יכול אפילו להזניק את הפרויקט שלך עם אלפי הרכיבים המשותפים לקהילת הקוד הפתוח React כמו Chakra UI ו-Material UI.

הגדרת רכיב

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

export default function Profile() {
  return (
    <img
      src="https://i.imgur.com/MK3eW3Am.jpg"
      alt="Katherine Johnson"
    />
  )
}

והנה איך לבנות רכיב:

שלב 1: ייצא את הרכיב

הקידומת export default היא תחביר JavaScript סטנדרטי (לא ספציפית לReact). היא מאפשרת לסמן את הפונקציה הראשית בקובץ, כך שתוכל לייבא אותה מאוחר יותר מקבצים אחרים. (עוד על ייבוא ​​ב-ייבוא ​​וייצוא רכיבים-ו-ייצוא!

שלב 2: הגדר את הפונקציה

עם function Profile() { } אתה מגדיר פונקציה JavaScript עם השם Profile.

Pitfall

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

שלב 3: הוסף סימון

הרכיב מחזיר תג <img /> עם תכונות src וalt. <img /> כתוב כמו HTML, אבל הוא למעשה JavaScript מתחת למכסה המנוע! תחביר זה נקרא JSX, והוא מאפשר להטמיע סימון בתוך JavaScript.

ניתן לכתוב statements להחזרה כולם בשורה אחת, כמו ברכיב זה:

return <img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />;

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

return (
<div>
<img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
</div>
);

Pitfall

ללא סוגריים, כל קוד בשורות שאחרי return יתעלם!

שימוש ברכיב

כעת לאחר שהגדרת את רכיב Profile שלך, אתה יכול לקנן אותו בתוך רכיבים אחרים. לדוגמה, אתה יכול לייצא רכיב Gallery שuse של רכיבי Profile מרובים:

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>
  );
}

מה הדפדפן רואה

שימו לב להבדל במארז:

  • <section> הוא אותיות קטנות, אז React יודע שאנחנו מתייחסים לתג HTML.
  • <Profile /> מתחיל באות גדולה P, אז React יודע שאנחנו רוצים use הרכיב שלנו שנקרא Profile.

ו-Profile מכיל אפילו יותר HTML: <img />. בסופו של דבר, זה מה שהדפדפן רואה:

<section>
<h1>Amazing scientists</h1>
<img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
<img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
<img src="https://i.imgur.com/MK3eW3As.jpg" alt="Katherine Johnson" />
</section>

קינון וארגון רכיבים

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

Because רכיבי Profile מוצגים בתוך Gallery - אפילו כמה פעמים! - אנו יכולים לומר שGallery הוא רכיב אב, המציג כל Profile כ”ילד”. זה חלק מהקסם של React: אתה יכול להגדיר רכיב פעם אחת, ואז use אותו בכמה מקומות וכמה פעמים שתרצה.

Pitfall

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

export default function Gallery() {
// 🔴 Never define a component inside another component!
function Profile() {
// ...
}
// ...
}

הקטע שלמעלה הוא מאוד איטי ו-causes באגים. במקום זאת, הגדר כל רכיב ברמה העליונה:

export default function Gallery() {
// ...
}

// ✅ Declare components at the top level
function Profile() {
// ...
}

כאשר רכיב צאצא זקוק לכמה נתונים מהורה, העבירו אותם על ידי props במקום הגדרות קינון.

Deep Dive

רכיבים עד הסוף

היישום React שלך מתחיל ברכיב “שורש”. בדרך כלל, הוא נוצר באופן אוטומטי כאשר אתה מתחיל פרויקט חדש. לדוגמה, אם אתה use CodeSandbox או אם אתה use את המסגרת Next.js, רכיב השורש מוגדר ב-pages/index.js. בדוגמאות אלה, ייצאת רכיבי בסיס.

רוב האפליקציות React use רכיבים עד הסוף. משמעות הדבר היא שלא רק use רכיבים עבור חלקים לשימוש חוזר כמו כפתורים, אלא גם עבור חלקים גדולים יותר כמו סרגלי צד, רשימות, ובסופו של דבר, דפים שלמים! רכיבים הם דרך שימושית לארגון קוד UI ותגיות, גם אם חלקם used פעם אחת בלבד.

React-based frameworks לוקחים את זה צעד קדימה. במקום להשתמש בקובץ HTML ריק ולתת לReact “להשתלט” על ניהול הדף עם JavaScript, הם גם מייצרים את HTML באופן אוטומטי ממרכיבי React שלכם. זה מאפשר לאפליקציה שלך להציג תוכן מסוים לפני שהקוד JavaScript נטען.

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

Recap

זה עתה קיבלת את הטעם הראשון שלך מ-React! בואו נסכם כמה נקודות מפתח.

  • React מאפשר לך ליצור רכיבים, רכיבי ממשק משתמש ניתנים לשימוש חוזר עבור האפליקציה שלך.
  • באפליקציית React, כל פיסת ממשק משתמש היא רכיב.
  • רכיבי React הם פונקציות JavaScript רגילות למעט:
  1. שמותיהם מתחילים תמיד באות גדולה.
  2. הם מחזירים סימון JSX.

Challenge 1 of 4:
ייצא את הרכיב

ארגז החול הזה לא עובד מכיוון שuse רכיב השורש לא מיוצא:

function Profile() {
  return (
    <img
      src="https://i.imgur.com/lICfvbD.jpg"
      alt="Aklilu Lemma"
    />
  );
}

נסה לתקן את זה בעצמך לפני שתסתכל על הפתרון!