Importar y exportar componentes
La magia de los componentes reside en su reutilización: puedes crear componentes que están compuestos por otros componentes. Pero a medida que anidas más y más componentes, a menudo tiene sentido empezar a separarlos en archivos diferentes. Esto te permite mantener tus archivos fáciles de escanear y reutilizar componentes en más lugares.
Aprenderás
- Qué es un archivo de componente raíz
- Cómo importar y exportar un componente
- Cuándo usar importaciones y exportaciones por defecto y nombradas
- Cómo importar y exportar múltiples componentes desde un archivo
- Cómo dividir componentes en múltiples archivos
El archivo del componente raíz
EnTu primer componente, creaste un componenteProfiley un componenteGalleryque lo renderiza:
Actualmente, estos viven en unarchivo de componente raíz,llamadoApp.jsen este ejemplo. Dependiendo de tu configuración, tu componente raíz podría estar en otro archivo. Si usas un framework con enrutamiento basado en archivos, como Next.js, tu componente raíz será diferente para cada página.
Exportar e importar un componente
¿Qué pasa si quieres cambiar la pantalla de inicio en el futuro y poner allí una lista de libros de ciencia? ¿O colocar todos los perfiles en otro lugar? Tiene sentido moverGallery y Profilefuera del archivo del componente raíz. Esto los hará más modulares y reutilizables en otros archivos. Puedes mover un componente en tres pasos:
- Creaun nuevo archivo JS para colocar los componentes.
- Exportatu componente de función desde ese archivo (usando exportacionespor defecto o nombradas).
- Importaen el archivo donde usarás el componente (usando la técnica correspondiente para importar exportacionespor defecto o nombradas).
Aquí, tantoProfilecomoGalleryhan sido movidos fuera deApp.jsa un nuevo archivo llamadoGallery.js. Ahora puedes cambiarApp.jspara importarGallerydesdeGallery.js:
Observa cómo este ejemplo ahora se divide en dos archivos de componentes:
Gallery.js:- Define el componente
Profile, que solo se usa dentro del mismo archivo y no se exporta. - Exporta el componente
Gallerycomo unaexportación por defecto.
- Define el componente
App.js:- Importa
Gallerycomo unaimportación por defectodesdeGallery.js. - Exporta el componente raíz
Appcomo unaexportación por defecto.
- Importa
Nota
Puede que encuentres archivos que omiten la extensión de archivo.js, así:
Tanto'./Gallery.js'como'./Gallery'funcionarán con React, aunque el primero se acerca más a cómo funcionan losmódulos ES nativos.
Exportar e importar múltiples componentes desde el mismo archivo
¿Qué pasa si quieres mostrar solo unProfileen lugar de una galería? También puedes exportar el componenteProfile. Pero Gallery.jsya tiene una exportaciónpor defecto, y no puedes tenerdosexportaciones por defecto. Podrías crear un nuevo archivo con una exportación por defecto, o podrías agregar una exportaciónnombradaparaProfile.¡Un archivo solo puede tener una exportación por defecto, pero puede tener numerosas exportaciones nombradas!
Nota
Para reducir la posible confusión entre exportaciones por defecto y nombradas, algunos equipos eligen ceñirse solo a un estilo (por defecto o nombrado), o evitar mezclarlos en un solo archivo. ¡Haz lo que mejor funcione para ti!
Primero,exportaProfiledesdeGallery.jsusando una exportación nombrada (sin la palabra clavedefault):
Luego,importaProfiledesdeGallery.js a App.jsusando una importación nombrada (con llaves):
Finalmente,renderiza<Profile />desde el componenteApp:
AhoraGallery.jscontiene dos exportaciones: una exportación por defectoGalleryy una exportación nombradaProfile. App.jsimporta ambas. Intenta editar<Profile /> a <Gallery />y viceversa en este ejemplo:
Ahora estás usando una mezcla de exportaciones por defecto y nombradas:
Gallery.js:- Exporta el componente
Profilecomo unaexportación nombrada llamadaProfile. - Exporta el componente
Gallerycomo unaexportación por defecto.
- Exporta el componente
App.js:- Importa
Profilecomo unaimportación nombrada llamadaProfiledesdeGallery.js. - Importa
Gallerycomo unaimportación por defectodesdeGallery.js. - Exporta el componente raíz
Appcomo unaexportación por defecto.
- Importa
Recapitulación
En esta página aprendiste:
- Qué es un archivo de componente raíz
- Cómo importar y exportar un componente
- Cuándo y cómo usar importaciones y exportaciones por defecto y nombradas
- Cómo exportar múltiples componentes desde el mismo archivo
Prueba algunos desafíos
Challenge 1 of 1:Divide los componentes aún más #
Actualmente, Gallery.js exporta tanto Profile como Gallery, lo cual es un poco confuso.
Mueve el componente Profile a su propio Profile.js, y luego cambia el componente App para que renderice tanto <Profile /> como <Gallery /> uno tras otro.
Puedes usar una exportación por defecto o nombrada para Profile, pero asegúrate de usar la sintaxis de importación correspondiente tanto en App.js como en Gallery.js! Puedes consultar la tabla del análisis profundo anterior:
Después de que funcione con un tipo de exportaciones, haz que funcione con el otro tipo.
