В этой статье мы углубимся в концепцию порталов в React и посмотрим, как их можно использовать для улучшения ваших компонентов пользовательского интерфейса.
Порталы в React — это мощный инструмент для рендеринга компонентов за пределами дерева DOM их родительских компонентов. Они предоставляют способ отсоединить компонент от его родителя и присоединить его к другому узлу DOM, вместо того, чтобы находиться внутри его родительского компонента. Это обеспечивает большую гибкость и улучшенный дизайн пользовательского интерфейса. Это может быть полезно в определенных случаях, когда вы хотите отобразить компонент, который логически является дочерним по отношению к определенному компоненту, но вам нужно, чтобы он был физически отделен от своего родительского компонента в дереве DOM.
С помощью порталов вы можете создавать модальные окна, всплывающие подсказки или другие элементы пользовательского интерфейса, которые необходимо отображать поверх других компонентов, независимо от их отношения родитель-потомок. Порталы создаются с использованием метода ReactDOM.createPortal
и могут использоваться для воплощения ваших компонентов в жизнь новыми и творческими способами.
Скажем, у вас может быть модальный компонент, который вы хотите отображать вне основного компонента приложения, чтобы он отображался поверх других компонентов независимо от иерархии родитель-потомок. Порталы позволяют сделать это путем создания нового **корня** в DOM и присоединения к нему вашего компонента. Вы предоставляете компонент, который хотите визуализировать, и узел DOM, где вы хотите его визуализировать.
Например:
function Modal({ children }) { return ReactDOM.createPortal(children, document.getElementById("modal-root")); }
В приведенном выше примере у нас есть модальный компонент, который отображает своих дочерних элементов с помощью портала. document.getElementById('modal-root')
— это DOM-узел, который мы создали в другом месте нашего HTML-файла (index.html
), где мы хотим отобразить наш модальный компонент.
Таким образом, мы можем отображать модальный компонент вне основного компонента приложения и отображать его поверх других компонентов.
Узел DOM, который мы создали в нашем HTML
<div id="modal-root"></div>
Визуализированный HTML
Модальный компонент будет отображаться в элементе modal-root
, который вам нужно будет определить в вашем HTML:
🍀Поддержка
Пожалуйста, следите за нами и поддержите нас, подписавшись на наш канал. Ваша поддержка очень ценна и поможет нам продолжать создавать контент для вас. Спасибо заранее за вашу поддержку!