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

טייק אווי מפתח

  • פורטלים של React מאפשרים לך להציג תוכן של רכיב מחוץ להיררכיית רכיבי האב שלו, מה שהופך אותו לשימושי עבור רכיבי ממשק משתמש כמו מודלים ושכבות-על.
  • ניתן להשתמש בפורטלים בתרחישים שונים כגון מודלים, אינטגרציות של צד שלישי, תפריטי הקשר וטיפים, המאפשרים עיבוד גמיש במיקומי DOM שונים.
  • על ידי שימוש ב-React Portals, אתה יכול להפריד את החששות של ממשק המשתמש מעץ הרכיבים הראשי, לשפר את תחזוקת הקוד ולשלוט בקלות ב-z-index של רכיבים עבור שכבות וערימה של רכיבי ממשק משתמש.

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

React מציעה פתרון לבעיה זו באמצעות תכונה הנקראת פורטלים.

מהם פורטלי React?

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

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

instagram viewer

שימושים עבור פורטלים של React

פורטלים של React מועילים בתרחישים שונים:

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

כיצד פועלים פורטלי React

באופן מסורתי, כאשר אתה מעבד רכיב ב-React, אתה מצרף את הפלט שלו לצומת ה-DOM של רכיב האב. זה עובד היטב עבור רוב התרחישים, אבל זה הופך למגביל כאשר אתה צריך לעבד תוכן מחוץ להיררכיה של ההורה.

נניח שאתה יוצר דיאלוג מודאלי. כברירת מחדל, תציב את תוכן המודאל בתוך צומת ה-DOM של רכיב האב.

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

פורטלים של React מטפלים במגבלה זו בכך שהם מאפשרים לך לציין רכיב DOM של יעד שבו הפלט של רכיב אמור להופיע.

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

כיצד להשתמש בפורטלים של React

מודלים הם דוגמה מושלמת למקרים שבהם אתה יכול להשתמש בפורטלים של React. קוד לדוגמה זה מסביר את ההליך.

הגדר אפליקציית React Basic

לפני יצירת פורטל, ודא שיש לך יישום בסיסי של React. אתה יכול להשתמש כלים כמו Create React App פיגום במהירות פרויקט.

צור פורטל למודלים

כדי ליצור פורטל, השתמש ב- ReactDOM.createPortal() פוּנקצִיָה. נדרשים שני ארגומנטים: התוכן שברצונך לרנדר, והפניה לצומת DOM כדי לעבד אותו.

בדוגמה זו, הרכיב Modal מעבד את ילדיו באמצעות פורטל. התוכן יופיע באלמנט DOM עם המזהה 'root'.

// Modal.js
import ReactDOM from"react-dom";

const Modal = ({ children }) => {
const modalRoot = document.getElementById("root");
return ReactDOM.createPortal(children, modalRoot);
};

exportdefault Modal;

ניתן להגדיר את התוכן של מודאל ספציפי ברכיב מסוים. לדוגמה, רכיב ModalContent זה מכיל פסקה ו-a סגור לַחְצָן:

// Create a Modal Content Component
const ModalContent = ({ onClose }) => (
"modal">
"modal-content">

This is a modal content.</p>

exportdefault ModalContent;

לאחר מכן תוכל לפתוח את ה-Modal באמצעות לחיצת כפתור שהוגדרה ב-App.js:

// Usage in App component
import { useState } from"react";
import Modal from"./Modal";
import ModalContent from"./ModalContent";
import"./App.css";

const App = () => {
const [isModalOpen, setIsModalOpen] = useState(false);

const toggleModal = () => {
setIsModalOpen(!isModalOpen);
};

return (


exportdefault App;

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

דוגמאות מהעולם האמיתי

פורטלים של React שימושיים במצבים יומיומיים שונים.

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

שיטות עבודה מומלצות לשימוש בפורטל

כדי להפיק את המרב מ-React Portals, עקוב אחר הטיפים הבאים:

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

היתרונות של פורטלים של React

פורטלים של React מציעים מספר יתרונות שיכולים לשפר את הפיתוח של ממשקי משתמש מורכבים. הֵם:

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

מלכודות ושיקולים פוטנציאליים

בעוד שפורטלי React מועילים, זכור את הדברים הבאים:

  • בעיות CSS: פורטלים עלולים לגרום להתנהגות בלתי צפויה בסגנון CSS מכיוון שהם מכניסים תוכן מחוץ לרכיבי אב. השתמש בסגנונות גלובליים או נהל את היקף ה-CSS בזהירות.
  • נגישות: כאשר אתה משתמש בפורטלים לעיבוד תוכן, זכור לשמור על תכונות נגישות כמו ניווט במקלדת ותאימות לקורא מסך ללא פגע.
  • עיבוד בצד השרת: ייתכן שהפורטלים לא משתלבים היטב עיבוד בצד השרת (SSR). הבן את ההשפעות והמגבלות של השימוש בפורטלים בהגדרות SSR.

מניע ממשק משתמש מעבר לנורמה

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

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

בין אם אתה יוצר מודלים או מביא ספריות של צד שלישי, React Portals מספקים מענה רב עוצמה למתן מענה לצרכים תובעניים של ממשק משתמש.