Introdução
Neste laboratório, exploraremos como criar um componente de conteúdo recolhível em React usando o hook useState. Este componente permitirá que os usuários alternem a visibilidade do conteúdo clicando em um botão, tornando-o uma ferramenta útil para organizar e apresentar informações em uma página web. Ao final deste laboratório, você terá uma melhor compreensão de como criar componentes reutilizáveis em React que melhoram a acessibilidade e a experiência do usuário de suas aplicações web.
Conteúdo Recolhível
index.htmlescript.jsjá foram fornecidos na VM. Em geral, você só precisa adicionar código ascript.jsestyle.css.
Esta função renderiza um componente recolhível com um botão que alterna a visibilidade de seu conteúdo. Veja como usá-lo:
- Use o hook
useState()para criar a variável de estadoisCollapsed, que representa se o conteúdo está atualmente recolhido ou expandido. Inicialize-a comocollapsed. - Use o elemento
<button>para alternar o estadoisCollapsede mostrar/ocultar o conteúdo passado via a propchildren. - Use
isCollapsedpara aplicar a classe CSS apropriada ao contêiner de conteúdo, sejacollapsedouexpanded, o que determina sua aparência. - Atualize o atributo
aria-expandeddo contêiner de conteúdo com base no estadoisCollapsed, para tornar o componente acessível a usuários com deficiências.
Aqui está o código CSS necessário para este componente:
.collapse-button {
display: block;
width: 100%;
}
.collapse-content.collapsed {
display: none;
}
.collapse-content.expanded {
display: block;
}
E aqui está o código JavaScript:
const Collapse = ({ collapsed, children }) => {
const [isCollapsed, setIsCollapsed] = React.useState(collapsed);
return (
<>
<button
className="collapse-button"
onClick={() => setIsCollapsed(!isCollapsed)}
>
{isCollapsed ? "Show" : "Hide"} content
</button>
<div
className={`collapse-content ${isCollapsed ? "collapsed" : "expanded"}`}
aria-expanded={isCollapsed}
>
{children}
</div>
</>
);
};
Para usar este componente, basta chamá-lo com o conteúdo que você deseja recolher:
ReactDOM.createRoot(document.getElementById("root")).render(
<Collapse>
<h1>This is a collapse</h1>
<p>Hello world!</p>
</Collapse>
);
Por favor, clique em 'Go Live' no canto inferior direito para executar o serviço web na porta 8080. Em seguida, você pode atualizar a aba Web 8080 para visualizar a página web.
Resumo
Parabéns! Você concluiu o laboratório de Conteúdo Recolhível. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.