✈️ 17) Patrones avanzados
Presentation y Container components
Es un patrón simple y muy útil en el desarrollo de aplicaciones react. A medida que ganamos experiencia en react surge casi de forma intuitiva utilizar este patrón.
Te darás cuenta que el uso de componentes con react son mucho más fáciles de reutilizar y entender si los dividimos en dos grandes grupos: Presentation y Container components.
Presentation components
Este tipo de componentes tiene la responsabilidad de renderizar la UI, son una especie de template.
Deberán:
Preocuparse por cómo se ven nuestra UI
Contienen markdown HTML
No manejan estado
Recibe datos y funciones solamente por props
Se escriben con funtions, rara vez se utiliza class component
Container components
Este tipo de componentes tiene la responsabilidad de manejar el estado y la logica de la UI.
Deberán:
Preocuparse por cómo funcionan las cosas
Proporcionar los datos a los componentes de presentación
Proporcionar funciones de comportamiento a los componentes de presentación
Hacen peticiones HTTP o se comunican con los services que lo hacen
Beneficios y un ejemplo
Listemos algunos beneficios de utilizar este patrón:
Mejor separación de preocupaciones. Por un lado tenemos los template y por otro la lógica.
Reutilización. Podemos usar el mismo componente de presentación con fuentes de estado completamente diferentes.
Podemos darle los componentes de presentación a un diseñador, es casi HTML. Podrá trabajar en ellos.
Ejemplo
Apliquemos el patrón al el ejemplo que escribimos en la sección anterior.
Originalmente teníamos esto.
Luego de aplicar el patrón tendríamos esto.
Cómo verás nuestro componente FetchGithubTemplate nos quedo super abstracto, no depende de la API que utilicemos ni de cómo manejemos el state.
Para aprender más sobre este patrón ingresa aquí:
High Order Components
Los HoC son componentes que buscan abstraer funcionalidad que se repite en varios componentes, y agregarla como add ons a otros componentes que podemos ir creando. Más concretamente, un High Order Component es una función que toma como parámetro un componente, y devuelve otro componente.
Esto lo podemos ver con un ejemplo más concreto. Supongamos que tenemos un Form en donde se puse un nombre de usuario y un password, y al hacer click en el botón de Iniciar sesión, queremos que se muestre un componente de Loading, para darle un poco de feedback al usuario de que estamos trabajando.
Con este código podemos lograr esto, ¿pero qué sucede si tenemos otro componente que al hacer alguna otra acción?, ¿necesitamos hacer el mismo comportamiento? Aquí es donde entra el High Order Component.
Veamos como queda:
Por otro lado, actualizamos nuestro componente original:
Para aprender más sobre los HoC ingresa aquí:
Last updated