a criação de modais e dicas de ferramentas no React costumava ser complexa e difícil de estilizar e levava a muitos erros de estilo.
A API createPortal simplifica esse processo, permitindo renderizar componentes fora do DOM principal, o que resulta em facilidade de estilo e manutenção. Neste post aprenderemos como usar esta ferramenta para criar modais e dicas de ferramentas da maneira certa no React.
createPortal é uma função integrada do React que permite renderizar componentes em diferentes partes do DOM. E é particularmente útil para construir: modais e sobreposições, componentes de terceiros e elementos de UI personalizados.
Um portal é usado dentro da instrução return do componente e apenas altera o posicionamento físico do nó DOM. é como teletransportar um nó DOM para fora da árvore DOM principal. A API createPortal acessa dois parâmetros e um terceiro opcional:
Se assumirmos que criamos um portal no componente A e o renderizamos no componente B, os filhos do portal acessarão todo o estado e variável do componente A e funcionarão como estão no componente A enquanto for renderizado no componente B.
No exemplo abaixo o portal é usado para teletransportar o componente Child que aceita um estado e mover esse componente para o corpo.
import { createPortal } from 'react-dom' const App = () => { const [state, setState] = useState() return() } export default App...
createPoratl(, document.body )
Agora o componente filho será renderizado em tags corporais em HTML.
createPortal é uma ferramenta valiosa no React para criar modais, dicas de ferramentas e outros componentes que precisam ser renderizados fora da árvore DOM principal. ao usar esta ferramenta você pode obter uma abordagem mais limpa, flexível e eficiente desses elementos.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3