Use o elemento nativo dialog com showModal onde der, já que ele te dá a top layer, o aprisionamento de foco e o tratamento do Escape de graça. Caso contrário você precisa de role dialog com aria-modal, um título rotulando o diálogo, foco movido para dentro do diálogo na abertura e devolvido ao gatilho no fechamento, um focus trap, Escape para dispensar, e o fundo tornado inerte para que leitores de tela e o Tab não passeiem por lá.
Por que os entrevistadores perguntam isso
Modais são o teste padrão de se um candidato trata acessibilidade como trabalho de verdade ou como item de checklist adicionado depois. O entrevistador quer ouvir sobre gerenciamento de foco especificamente, porque é isso que a maioria das implementações erra, mais consciência de que a plataforma hoje resolve boa parte disso. Mencionar portals, travar o scroll e devolver o foco mostra que você já entregou um que sobreviveu a uma auditoria.
Como estruturar sua resposta
- Recorra à plataforma primeiro: o elemento dialog e o showModal.
- Liste os requisitos: rotulagem, foco entrando e saindo, Escape, fundo inerte.
- Mencione portals e problemas de empilhamento ou de scroll.
- Diga como você verificaria, só com teclado e com um leitor de tela.
Exemplo de resposta
Meu primeiro movimento é não construir. O elemento nativo dialog com showModal cuida da top layer, então eu paro de brigar com z-index e ancestrais com overflow hidden, e ele me dá Escape e o fundo inerte sem nenhum código meu. Em cima disso eu ainda rotulo, com aria-labelledby apontando para o título, e movo o foco para um primeiro elemento sensato na abertura, normalmente o título ou o primeiro campo em vez do botão de fechar. No fechamento eu devolvo o foco para o que abriu, porque perder o foco para o body é o que de fato deixa usuários de teclado à deriva. Se eu tiver que fazer na mão por razões de navegador ou de design, então é role dialog com aria-modal true, um focus trap de verdade no Tab e no Shift Tab, Escape e clique no backdrop para dispensar, inert no resto da página, e travamento de scroll que não desloca o layout. Eu testo só com teclado primeiro, depois com um leitor de tela, porque essa combinação pega quase tudo que um verificador automático deixa passar.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- Como você lida com dois diálogos empilhados?
- O que dá errado quando um modal não é renderizado num portal?
- Como você anunciaria um erro assíncrono que aparece dentro do diálogo?
Mais perguntas para Desenvolvedor React
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas