We want to hear from you!Take our 2021 Community Survey!
אתר זה אינו מעודכן יותר.עבור אל react.dev

Fragments

These docs are old and won’t be updated. Go to react.dev for the new React docs.

These new documentation pages teach modern React:

תבנית נפוצה ב-React עבור קומפוננטה שמחזירה אלמנטים מרובים. Fragments נותנים לך לאחד רשימה של ילדים מבלי להוסיף nodes נוספים ל-DOM.

render() {
  return (
    <React.Fragment>
      <ChildA />
      <ChildB />
      <ChildC />
    </React.Fragment>
  );
}

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

מוטיבציה

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

class Table extends React.Component {
  render() {
    return (
      <table>
        <tr>
          <Columns />
        </tr>
      </table>
    );
  }
}

<Columns /> יצטרך להחזיר אלמנטים <td> מרובים כדי שהרנדור של ה-HTML יהיה חוקי. אם ה-div ישמש כהורה ב-render() של <Columns />, אז התוצאה של ה-HTML תהיה אינה חוקית.

class Columns extends React.Component {
  render() {
    return (
      <div>
        <td>Hello</td>
        <td>World</td>
      </div>
    );
  }
}

התוצאה בפלט של ה-<Table />:

<table>
  <tr>
    <div>
      <td>Hello</td>
      <td>World</td>
    </div>
  </tr>
</table>

Fragments פותרים את הבעיה הזו.

שימוש

class Columns extends React.Component {
  render() {
    return (
      <React.Fragment>        <td>Hello</td>
        <td>World</td>
      </React.Fragment>    );
  }
}

מה שמביא את <Table /> לפלט תקין.

<table>
  <tr>
    <td>Hello</td>
    <td>World</td>
  </tr>
</table>

תחביר קצר

קיים תחביר חדש וקצר יותר שתוכל להשתמש בו להצהרת fragments. הוא נראה כמו תגיות ריקות.

class Columns extends React.Component {
  render() {
    return (
      <>        <td>Hello</td>
        <td>World</td>
      </>    );
  }
}

אתה יכול להשתמש <></> באותו אופן שהשתמשת בכל אלמנט אחר, אך הוא אינו תומך ב-keys או תכונות.

Keyed Fragments

Fragments מוצהר <React.Fragment> עם התחבר המפורש יכול להכיר keys. מקרה שימושי הוא כאשר ממפים אוסף למערך של fragments - לדוגמא, ליצירת רשימה של תיאור.

function Glossary(props) {
  return (
    <dl>
      {props.items.map(item => (
        // Without the `key`, React will fire a key warning
        <React.Fragment key={item.id}>
          <dt>{item.term}</dt>
          <dd>{item.description}</dd>
        </React.Fragment>
      ))}
    </dl>
  );
}

key הוא התכונה היחידה שאפשר להעביר ל-Fragment, בעתיד, אנו נוסיף תמיכה לתכונות נוספות, כגון event handlers.

דוגמא חיה

אתה יכול לנסות את התחביר החדש של ה-JSX fragment עם CodePen הזה.

האם התוכן בעמוד זה היה שימושי?לעריכת העמוד הנוכחי