La perforación con puntal puede ser un truco útil, pero deberá tener cuidado con algunas trampas incómodas.

La gestión de datos y la creación de aplicaciones sólidas y mantenibles son habilidades vitales para el desarrollo de software. Una forma común de modularizar sus aplicaciones React es usar la perforación de accesorios, que ayuda a pasar datos al árbol de componentes.

Pero, a medida que los proyectos se vuelven más grandes, la perforación con puntal puede tener sus inconvenientes. Explore los problemas relacionados con la perforación con puntal y descubra las alternativas disponibles.

Comprensión de la perforación con puntal

La perforación de accesorios es una técnica que pasa datos por el árbol de componentes como accesorios, independientemente de si los componentes intermedios necesitan los datos o no.

La exploración implica pasar accesorios de un elemento principal a sus componentes secundarios y más abajo en la jerarquía. El objetivo principal es permitir que los componentes en los niveles inferiores del árbol accedan y utilicen los datos que proporcionan los componentes de nivel superior.

instagram viewer

Las desventajas de la perforación con puntal

Si bien la perforación de accesorios resuelve el problema de compartir datos, presenta varios inconvenientes que pueden dificultar la capacidad de mantenimiento del código y la eficiencia del desarrollo.

1. Mayor complejidad

A medida que crece una aplicación, la perforación puntal se vuelve más difícil de manejar. Esto puede conducir a una red compleja de dependencias de componentes, lo que dificulta la comprensión y el cambio del código.

import ChildComponent from'./ChildComponent';

exportdefaultfunctionParentComponent = () => {
const data = 'Prop drilling!';
return ( <div><ChildComponentdata={data} />div> );
};

import GrandChildComponent from'./GrandChildComponent';

exportdefaultfunctionChildComponent = ({ data }) => {
return ( <div><GrandChildComponentdata={data} />div> );
};

import GreatGrandChildComponent from'./GreatGrandChildComponent';

exportdefaultfunctionGrandChildComponent = ({ data }) => {
return ( <div><GreatGrandChildComponentdata={data} />div> );
};

exportdefaultfunctionGreatGrandChildComponent = ({ data }) => {
return ( <div><p>{data}p>div> );
};

Aquí, los datos del ParentComponent de nivel superior se trasladan al GreatGrandChildComponent a través de dos componentes intermedios.

A medida que la jerarquía de componentes se vuelve más profunda y más componentes dependen de la propiedad, se vuelve más difícil rastrear y administrar el flujo de datos.

2. Acoplamiento apretado

Esto ocurre cuando los componentes dependen unos de otros a través de accesorios, lo que dificulta cambiarlos o reutilizarlos. Esto puede dificultar la realización de cambios en un componente sin afectar a los demás.

import ChildComponentA from'./ChildComponentA'; 
import ChildComponentB from'./ChildComponentB';

exportdefaultfunctionParentComponent = () => {
const sharedData = 'Shared data';

 return (




</div>
 );
};

import GrandChildComponent from'./GrandChildComponent';

exportdefaultfunctionChildComponentA = ({ data }) => {
return (


Component A</p>

</div>
 );
};

import GrandChildComponent from'./GrandChildComponent';

exportdefaultfunctionChildComponentB = ({ data }) => {
return (


Component B</p>

</div>
 );
};

exportdefaultfunctionGrandChildComponent = ({ data }) => {
return (

<p>{data}p> </div>
 );
};

Aquí, ambos componentes secundarios reciben los mismos datos de su componente principal y los pasan a GrandChildComponent.

Si los datos se actualizan, todos los componentes de la jerarquía también deben actualizarse, incluso si algunos no usan los datos. Esto puede ser difícil y llevar mucho tiempo, y también aumenta el riesgo de introducir errores.

3. Mantenibilidad del código

La perforación de accesorios es un problema de mantenimiento del código porque los nuevos componentes necesitan acceso a los accesorios que pasan a través de la jerarquía. Esto puede generar errores si necesita modificar muchos componentes e inconsistencias si cambian los accesorios.

import ChildComponent from'./ChildComponent'; 

exportdefaultfunctionParentComponent = () => {
const [count, setCount] = useState(0);

const incrementCount = () => {
setCount(count + 1);
};

return (



</div>
 );
};

import GrandChildComponent from'./GrandChildComponent';

exportdefaultfunctionChildComponent = ({ count, incrementCount }) => {
return (


exportdefaultfunctionGrandChildComponent = ({ count }) => {
return (


Count: {count}</p>
</div>
 );
};

Aquí, ParentComponent pasa el valor de conteo como apoyo a ChildComponent y luego a GrandChildComponent.

Pero, si el conteo cambia o si hay una nueva regla para pasar accesorios adicionales, deberá actualizar cada componente en la jerarquía que usa el accesorio. Este proceso es propenso a errores, lo que dificulta el mantenimiento del código y aumenta las incoherencias o los errores.

Exploración de alternativas a la perforación con puntal

Hay muchas soluciones de administración de estado en el ecosistema React que puede usar para superar los inconvenientes de la perforación de apoyo.

Contexto de reacción

React Context es una función que permite compartir el estado entre componentes sin pasar accesorios. Proporciona un almacén centralizado al que pueden acceder los componentes. con el gancho useContext. Esto puede mejorar el rendimiento y facilitar la administración del estado.

redux

redux es una biblioteca de gestión de estado que proporciona un único almacén de estado global. Los componentes pueden acceder y actualizar el estado a través de acciones y reductores. Esto puede ayudar a mantener su código organizado y puede facilitar la depuración.

MobX

MobX es una biblioteca de gestión de estado que utiliza datos observables. Esto significa que los componentes pueden suscribirse a cambios en el estado y actuar en respuesta. La biblioteca puede hacer que su código sea más reactivo y puede mejorar el rendimiento.

Jotai

Jotai es una biblioteca de gestión estatal para React, que utiliza un modelo de estado atómico. Le permite crear átomos de estado a los que los componentes pueden acceder y actualizar.

Con Jotai, puede reducir la necesidad de perforación de puntal y lograr un enfoque de administración de estado más eficiente y optimizado. Su diseño minimalista y su enfoque en el rendimiento lo convierten en una opción convincente para administrar el estado en las aplicaciones React.

La perforación Prop es una técnica para pasar datos de componentes principales a componentes secundarios. Es eficaz para compartir datos, pero tiene varios inconvenientes que pueden dificultar el mantenimiento y el desarrollo del código.

Para superar estos inconvenientes, puede utilizar alternativas como React Context, Redux y MobX. Estas soluciones brindan una forma más centralizada de administrar los datos, lo que puede hacer que el código sea más fácil de mantener y escalable.