render מרנדרת חתיכת JSX (“React node”) לתוך DOM node של דפדפן.
render(reactNode, domNode, callback?)הפניה
render(reactNode, domNode, callback?)
קראו ל-render כדי להציג קומפונטת React בתוך אלמנט DOM של דפדפן.
import { render } from 'react-dom';
const domNode = document.getElementById('root');
render(<App />, domNode);React תציג את <App /> בתוך domNode, ותיקח שליטה על ניהול ה-DOM שבתוכו.
אפליקציה שבנויה כולה ב-React לרוב תכלול רק קריאת render אחת עם קומפוננטת השורש שלה. עמוד שמשתמש ב”sprinkles” של React בחלקים שונים עשויים לכלול כמה קריאות render לפי הצורך.
פרמטרים
-
reactNode: React node שברצונכם להציג. בדרך כלל זו תהיה חתיכת JSX כמו<App />, אבל אפשר גם להעביר React אלמנט עםcreateElement(), מחרוזת, מספר,null, אוundefined. -
domNode: אלמנט DOM. React תציג אתreactNodeשהעברתם בתוך אלמנט ה-DOM הזה. מהרגע הזה React תנהל את ה-DOM בתוךdomNodeותעדכןT אותו_6__ ות__תכןT אותו_. -
אופציונלי
callback: פונקציה. אם הועברה, React תקרא לה אחרי שהקומפוננתה הוכנסה ל-DOM.
מחזירה
render בדרך כלל מחזירה null. עם זאת, אם reactNode שהעברתם היא רכיב כיתה, יוחזר מופע של הקומפוננטה הזו.
אזהרות
-
ב-React 18,
renderהוחלפה ב-createRoot. השתמשו ב-createRootעבור React 18 ומעלה. -
בפעם הראשונה שקוראים ל-
render, React תנקה את כל התוכן ה-HTML הקיים בתוךdomNodeרינדור קומפוננטת React לתוכה. אם ה-domNodeשלכם מכילה HTML אישית על ידי React בשרת או בזמן בנייה, השתמשו ב-hydrate()במקום, ברת שמח את מטפלי האירועים ל-HTML הקיים. -
אם תקראו ל-
renderעל אותוdomNodeיותר מפעם אחת, React תעדכן את ה-DOM לפי הצורך לשקף את ה-JSX העדכני ביותר שהעברתם. React תחליט אילו חלקים ב-DOM אפשר למחזר כשצריך ליצור מחדש על ידי “התאמה” לעץ שרונדר קודם. קריאה נוספת ל-renderעל אותוdomNodeדומה לקריאה ל-פונקצייתsetבקומפוננטת השורש: React נמנעת מעדכוני DOM מיותרים. -
אם האפליקציה שלכם בנויה לגמרי ב-React, כנראה שתהיה בה רק קריאת
renderאחת. (אם אתם משתמשים ב-framework, הוא יכול לבצע את הקריאה הזו עבורכם.) אתם רוצים לרנדר חתיכת JSX בחלק אחר של עץ ה-DOM שאינו ילד של הקומפוננטה שלכם (מודול אחר או tooltip), השתמשו ב-createPortalב-__.
שימוש
קראו ל-render כדי להציג קומפונטת React בתוך DOM צומת של דפדפן.
import { render } from 'react-dom';
import App from './App.js';
render(<App />, document.getElementById('root'));רינדור קומפונטת השורש
באפליקציות שבנויות לגמרי עם React, בדרך כלל עושים את זה פעם אחת בלבד בזמן ההפעלה — כדי לרנדר את קומפונטת ה”שורש”.
import './styles.css'; import { render } from 'react-dom'; import App from './App.js'; render(<App />, document.getElementById('root'));
בדרך כלל לא צריך לקרוא ל-render שוב או לקרוא לה במקומות נוספים. מהנקודה הזו React תנהל את ה-DOM של האפליקציה. כדי לעדכן את ה-UI, הקומפוננטות שלכם ישתמשו ב-state.
רינדור כמה שורשים
אם העמוד שלכם לא בנוי כולו ב-React, קראו ל-render עבור כל יחידת UI עליונה שמנוהלת על ידי React.
import './styles.css'; import { render } from 'react-dom'; import { Comments, Navigation } from './Components.js'; render( <Navigation />, document.getElementById('navigation') ); render( <Comments />, document.getElementById('comments') );
אפשר להשמיד את העצים שרונדרו עם unmountComponentAtNode().
עדכון העץ המרונדר
אפשר לקרוא ל-render יותר מפעם אחת על אותו DOM צומת. כל עוד מבנה עץ הקומפוננטות תואם למה שרונדר קודם, React תשמר את ה-state. שימו לב אפשרי ב-input, כלומר העדכונים מקריאות render חוזרות כל שנייה שנית הרסניים:
import { render } from 'react-dom'; import './styles.css'; import App from './App.js'; let i = 0; setInterval(() => { render( <App counter={i} />, document.getElementById('root') ); i++; }, 1000);
לא נפוץ לקרוא ל-render כמה פעמים. בדרך כלל תעדכנו state בתוך הקומפוננטות במקום.