Moduł 9 - Zajęcia 16 - Portale
1.1 Portale
Portale umożliwiają renderowanie elementów podrzędnych w węzeł DOM, który znajduje się wewnątrz hierarchii DOM komponenta rodzica.
ReactDOM.createPortal(child, container);
- Pierwszym argumentem może być poddrzewo Virtual DOM o dowolnym stopniu skomplikowania.
- Drugi argument to węzeł DOM, w którym będzie zrenderowany pierwszy argument.
Dokumentacja portali
1.2 Sposób wykorzystania
const PopupWindow = () => {
return ReactDOM.createPortal(
<div>PopupWindow with portal</div>,
document.querySelector("#popup-root")
);
};
Typowy sposób wykorzystywania portali zachodzi wtedy, gdy komponent rodzic ma overflow: hidden lub z-index, przy tym konieczne jest, aby element dziecko wizualnie "wychodził" ze swojego kontenera. Na przykład okna modalne, pokazywane podpowiedzi.
Bez względu na to, że portal może znajdować się w drzewie DOM gdziekolwiek, zachowuje się jak zwyczajny React-element dziecko. Rzeczy takie jak rekwizyty czy kontekst pracują tak samo jak wcześniej, niezależnie od tego, czy element dziecko jest portalem, ponieważ portal nadal istnieje w drzewie komponentów React niezależnie od jego położenia w drzewie DOM.
Dotyczy to również pojawienia się zdarzeń. Zdarzenie utworzone wewnątrz portalu będzie rozprzestrzeniać się do przodków w drzewie React, nawet jeśli nie są oni przodkami w drzewie DOM.