Dicas de ferramentas e menus suspensos com Portals
Use Portals para renderizar dicas de ferramentas e menus suspensos que escapem de contêineres com overflow-hidden.
Dicas de ferramentas e menus suspensos com Portals é uma aula grátis de React Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de React Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de React Academy inclui 4 aulas no total.
Boas-vindas
O problema do overflow
Estratégia de posicionamento
const rect = triggerRef.current.getBoundingClientRect();
const top = rect.bottom + window.scrollY + 8;
const left = rect.left + window.scrollX;Componente de dica de ferramenta
function Tooltip({ content, children }) {
const [visible, setVisible] = useState(false);
const [pos, setPos] = useState({ top: 0, left: 0 });
const ref = useRef();
const show = () => {
const r = ref.current.getBoundingClientRect();
setPos({ top: r.bottom + window.scrollY + 4,
left: r.left + window.scrollX });
setVisible(true);
};
return (
<span ref={ref} onMouseEnter={show} onMouseLeave={() => setVisible(false)}>
{children}
{visible && createPortal(
<div style={{ position:'absolute', top: pos.top, left: pos.left }}
className="tooltip">{content}</div>,
document.body
)}
</span>
);
}Atualizando a posição ao rolar e redimensionar
useEffect(() => {
if (!visible) return;
const update = () => setVisible(false);
window.addEventListener('scroll', update, true);
window.addEventListener('resize', update);
return () => {
window.removeEventListener('scroll', update, true);
window.removeEventListener('resize', update);
};
}, [visible]);Arquitetura de menus suspensos
Manipulador de cliques fora
useEffect(() => {
if (!open) return;
const handler = (e) => {
if (!menuRef.current?.contains(e.target) &&
!triggerRef.current?.contains(e.target)) {
setOpen(false);
}
};
document.addEventListener('mousedown', handler);
return () => document.removeEventListener('mousedown', handler);
}, [open]);Navegação por teclado em menus suspensos
Usando uma biblioteca de posicionamento
import { useFloating, flip, shift } from '@floating-ui/react';
const { refs, floatingStyles } = useFloating({
middleware: [flip(), shift()],
});Acessibilidade: ARIA para dicas de ferramenta
<button aria-describedby="tip1">Hover me</button>
{visible && createPortal(
<div id="tip1" role="tooltip">Helpful text</div>,
document.body
)}Verificação rápida
Recapitulação
Curso concluído
Perguntas Frequentes
A aula “Dicas de ferramentas e menus suspensos com Portals” é grátis?
Sim — o texto completo de “Dicas de ferramentas e menus suspensos com Portals” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de React Academy, atualize para CoddyKit PRO. O curso de React Academy inclui 4 aulas no total.
O que vou aprender em “Dicas de ferramentas e menus suspensos com Portals”?
Use Portals para renderizar dicas de ferramentas e menus suspensos que escapem de contêineres com overflow-hidden. Você pratica React Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar React Academy?
Nenhuma experiência prévia é necessária. React Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Dicas de ferramentas e menus suspensos com Portals”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de React Academy?
Sim. Cada aula de React Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- O que são os Portals do React
- Criação de um componente modal com Portals
- Tratamento de foco e armadilhas de teclado em modais
- Dicas de ferramentas e menus suspensos com Portals