Introducción
En el mundo de la programación es muy común recurrir a métodos o herramientas que permitan acelerar la finalización de un proyecto o la realización de tareas repetitivas. En React, podemos encontrar dos herramientas pensadas para ese fin. Los Higher Order Component y los Hook Personalizados.
Higher Order Component - HOC
Lo primero que debemos entender es que los Higher Order Component no forman parte de la librería React, sino que son un patrón de diseño resultante de la naturaleza composicional de la misma. Es decir, no necesitamos saber trabajar con HOC para sacar el máximo provecho de React.
Dicho esto, si queremos entender cómo funcionan los HOC deberíamos entender qué es la composición.
Composición
La composición es un concepto que corresponde a JavaScript y hace referencia a la capacidad que tienen los elementos de acceder a los valores almacenados en el espacio de memoria en que se encuentran contenido.
Probablemente, hayas escucha decir que “en JavaScript todo es un Objeto”. Esta afirmación está relacionada con el hecho de que, los denominados Tipo de Dato Abstracto (o datos complejos - funciones, arrays, objetos) se crean a partir de Objetos Planos. ¿Por qué es esto relevante? Porque el hecho de que las funciones en JavaScript sean objetos implica que pueden almacenar datos que, dadas las características del lenguaje, van a poder acceder al resto de los datos guardados en ese objeto.
Imaginemos que las funciones en JavaScript son cajas que almacenan su contenido en dos compartimentos separados. Uno para el código que indica qué quiero hacer y otro, la memoria, para guardar todos los datos necesarios para la ejecución del código.
Ahora bien, dentro del código de la función, nosotros tenemos la capacidad de crear otras funciones. Esas funciones se van a almacenar en el espacio de memoria de la función que la contiene y, por tanto, la función creada va a poder acceder a los otros datos almacenados en el mismo espacio de memoria.
La composición, entonces, consiste en la construcción de funciones que aprovechen los datos almacenados en los espacios de memoria que las contiene.Volviendo a React, y recordando que todos los Componentes son funciones, la propia naturaleza de los mismos nos permite trabajar con el concepto de composición. De hecho, la creación de la vista en un Componente que implica el uso de otro Componente es composición. Incluso existe una Prop llamada “children” que nos permite indicar cómo queremos se comporte los Componentes que sean hijos de otro.
Redes