תיאור ה-UI

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

הרכיב הראשון שלך

יישומי 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>
  );
}

Ready to learn this topic?

קרא את הרכיב הראשון כדי ללמוד כיצד להשתמש ברכיבי React.

Read More

ייבוא ​​וייצוא רכיבים

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

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

Ready to learn this topic?

קרא את כתיבת סימון עם JSX כדי ללמוד כיצד לכתוב JSX חוקי.

Read More

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 עם פלטה מתולתת כדי ללמוד כיצד לגשת לנתוני 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>
  );
}

Ready to learn this topic?

קרא את העברת props לרכיב כדי ללמוד כיצד להעביר ולקרוא props.

Read More

עיבוד מותנה

הרכיבים שלך יצטרכו מסופקים שונים. ב-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>
  );
}

Ready to learn this topic?

קרא את עיבוד מותנה כדי ללמוד את הדרכים השונות לעיבוד תוכן מותנה.

Read More

רשימות עיבוד

קרוב תרצה להציג מספר רכיבים דומים מאוסף נתונים. אתה יכול להשתמש ב-‘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 הוא ייצוג של יחסי ההורה והילד בין רכיבים.

A tree graph with five nodes, with each node representing a component. The root node is located at the top the tree graph and is labelled 'Root Component'. It has two arrows extending down to two nodes labelled 'Component A' and 'Component C'. Each of the arrows is labelled with 'renders'. 'Component A' has a single 'renders' arrow to a node labelled 'Component B'. 'Component C' has a single 'renders' arrow to a node labelled 'Component D'.
A tree graph with five nodes, with each node representing a component. The root node is located at the top the tree graph and is labelled 'Root Component'. It has two arrows extending down to two nodes labelled 'Component A' and 'Component C'. Each of the arrows is labelled with 'renders'. 'Component A' has a single 'renders' arrow to a node labelled 'Component B'. 'Component C' has a single 'renders' arrow to a node labelled 'Component D'.

עץ רינדור תגובה לדוגמה.

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

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

A tree graph with five nodes. Each node represents a JavaScript module. The top-most node is labelled 'RootModule.js'. It has three arrows extending to the nodes: 'ModuleA.js', 'ModuleB.js', and 'ModuleC.js'. Each arrow is labelled as 'imports'. 'ModuleC.js' node has a single 'imports' arrow that points to a node labelled 'ModuleD.js'.
A tree graph with five nodes. Each node represents a JavaScript module. The top-most node is labelled 'RootModule.js'. It has three arrows extending to the nodes: 'ModuleA.js', 'ModuleB.js', and 'ModuleC.js'. Each arrow is labelled as 'imports'. 'ModuleC.js' node has a single 'imports' arrow that points to a node labelled 'ModuleD.js'.

עץ תלות מודול לדוגמה.

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

Ready to learn this topic?

קרא את ממשק המשתמש שלך כעץ כדי ללמוד כיצד ליצור עיבוד ועצי תלות במודול עבור אפליקציית.

Read More

מה הלאה?

עברו אל הרכיב הראשון שלך כדי להתחיל לקרוא את זה עמוד אחר עמוד!

או, אם אתה כבר מכיר את הנושאים האלה, למה שלא תקרא על הוספת אינטראקטיביות?