Importando e Exportando Componentes
A magia dos componentes está em sua reutilização: você pode criar componentes que são compostos por outros componentes. Mas conforme você aninha mais e mais componentes, muitas vezes faz sentido começar a separá-los em arquivos diferentes. Isso permite manter seus arquivos fáceis de examinar e reutilizar componentes em mais lugares.
Você aprenderá
- O que é um arquivo de componente raiz
- Como importar e exportar um componente
- Quando usar importações e exportações padrão e nomeadas
- Como importar e exportar vários componentes de um arquivo
- Como dividir componentes em vários arquivos
O arquivo do componente raiz
EmSeu Primeiro Componente, você criou um componenteProfilee um componenteGalleryque o renderiza:
Atualmente, eles residem em umarquivo de componente raiz,chamadoApp.jsneste exemplo. Dependendo da sua configuração, seu componente raiz pode estar em outro arquivo. Se você usar um framework com roteamento baseado em arquivos, como o Next.js, seu componente raiz será diferente para cada página.
Exportando e importando um componente
E se você quiser mudar a tela inicial no futuro e colocar uma lista de livros de ciência lá? Ou colocar todos os perfis em outro lugar? Faz sentido moverGallery e Profilepara fora do arquivo do componente raiz. Isso os tornará mais modulares e reutilizáveis em outros arquivos. Você pode mover um componente em três etapas:
- Crieum novo arquivo JS para colocar os componentes.
- Exporteseu componente de função desse arquivo (usando exportaçõespadrãoounomeadas).
- Importeno arquivo onde você usará o componente (usando a técnica correspondente para importar exportaçõespadrãoounomeadas).
Aqui, tantoProfilequantoGalleryforam movidos deApp.jspara um novo arquivo chamadoGallery.js. Agora você pode alterarApp.jspara importarGallerydeGallery.js:
Observe como este exemplo agora está dividido em dois arquivos de componentes:
Gallery.js:- Define o componente
Profile, que é usado apenas dentro do mesmo arquivo e não é exportado. - Exporta o componente
Gallerycomo umaexportação padrão.
- Define o componente
App.js:- Importa
Gallerycomo umaimportação padrãodeGallery.js. - Exporta o componente raiz
Appcomo umaexportação padrão.
- Importa
Observação
Você pode encontrar arquivos que omitem a extensão de arquivo.js, assim:
Tanto'./Gallery.js'quanto'./Gallery'funcionarão com o React, embora o primeiro seja mais próximo de como osMódulos ES nativosfuncionam.
Exportando e importando vários componentes do mesmo arquivo
E se você quiser mostrar apenas umProfileem vez de uma galeria? Você também pode exportar o componenteProfile. Mas Gallery.jsjá tem uma exportaçãopadrão, e você não pode terduasexportações padrão. Você poderia criar um novo arquivo com uma exportação padrão, ou poderia adicionar uma exportaçãonomeadaparaProfile.Um arquivo só pode ter uma exportação padrão, mas pode ter inúmeras exportações nomeadas!
Observação
Para reduzir a confusão potencial entre exportações padrão e nomeadas, algumas equipes optam por usar apenas um estilo (padrão ou nomeado) ou evitar misturá-los em um único arquivo. Faça o que funcionar melhor para você!
Primeiro,exporteProfiledeGallery.jsusando uma exportação nomeada (sem a palavra-chavedefault):
Em seguida,importeProfiledeGallery.jsparaApp.jsusando uma importação nomeada (com chaves):
Finalmente,renderize<Profile />a partir do componenteApp:
AgoraGallery.jscontém duas exportações: uma exportação padrãoGallerye uma exportação nomeadaProfile. App.jsimporta ambas. Tente editar<Profile />para<Gallery />e vice-versa neste exemplo:
Agora você está usando uma mistura de exportações padrão e nomeadas:
Gallery.js:- Exporta o componente
Profilecomo umaexportação nomeada chamadaProfile. - Exporta o componente
Gallerycomo umaexportação padrão.
- Exporta o componente
App.js:- Importa
Profilecomo umaimportação nomeada chamadaProfiledeGallery.js. - Importa
Gallerycomo umaimportação padrãodeGallery.js. - Exporta o componente raiz
Appcomo umaexportação padrão.
- Importa
Recapitulação
Nesta página você aprendeu:
- O que é um arquivo de componente raiz
- Como importar e exportar um componente
- Quando e como usar importações e exportações padrão e nomeadas
- Como exportar vários componentes do mesmo arquivo
Experimente alguns desafios
Challenge 1 of 1:Divida os componentes ainda mais #
Atualmente, Gallery.js exporta tanto Profile quanto Gallery, o que é um pouco confuso.
Mova o componente Profile para seu próprio Profile.js, e então altere o componente App para renderizar tanto <Profile /> quanto <Gallery /> um após o outro.
Você pode usar uma exportação padrão ou nomeada para Profile, mas certifique-se de usar a sintaxe de importação correspondente tanto em App.js quanto em Gallery.js! Você pode consultar a tabela do aprofundamento acima:
Depois de conseguir fazer funcionar com um tipo de exportação, faça funcionar com o outro tipo.
