A támasztékfúrás hasznos trükk lehet, de ügyelnie kell néhány kínos buktatóra.

Az adatok kezelése és az erős, karbantartható alkalmazások létrehozása létfontosságú szoftverfejlesztési készségek. A React-alkalmazások modularizálásának általános módja a prop fúrás használata, amely segít az adatok továbbításában az összetevőfán.

De ahogy a projektek egyre nagyobbak lesznek, a támasztékfúrásnak megvannak a maga hátrányai. Fedezze fel a támasztékfúrással kapcsolatos problémákat, és derítse ki, milyen alternatívák állnak rendelkezésre.

A Prop Drilling megértése

A támaszfúrás egy olyan technika, amely az adatokat kellékekként továbbítja a komponensfán, függetlenül attól, hogy a köztes összetevőknek szükségük van-e az adatokra vagy sem.

A fúrás magában foglalja a kellékek átadását a szülőtől az alárendelt összetevőknek, és lejjebb a hierarchiában. A fő cél az, hogy a fa alacsonyabb szintjein lévő komponensek hozzáférjenek és felhasználják a magasabb szintű összetevők által biztosított adatokat.

A Prop Drilling hátrányai

instagram viewer

Míg a prop drilling megoldja az adatok megosztásának problémáját, számos hátránnyal jár, amelyek akadályozhatják a kód karbantarthatóságát és a fejlesztés hatékonyságát.

1. Fokozott komplexitás

Ahogy az alkalmazás növekszik, a támasztékfúrás kezelése egyre nehezebbé válik. Ez az összetevő-függőségek összetett hálójához vezethet, ami megnehezíti a kód megértését és megváltoztatását.

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> );
};

Itt a legfelső szintű ParentComponent adatai két közvetítő komponensen keresztül a GreatGrandChildComponentbe kerülnek.

Ahogy az összetevő-hierarchia elmélyül, és egyre több összetevő támaszkodik a támasztékra, egyre nehezebb lesz nyomon követni és kezelni az adatáramlást.

2. Szoros tengelykapcsoló

Ez akkor fordul elő, ha az összetevők a kellékeken keresztül függenek egymástól, így nehéz megváltoztatni vagy újra felhasználni őket. Ez megnehezítheti az egyik összetevő módosítását anélkül, hogy a többire hatással lenne.

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>
 );
};

Itt mindkét gyermekkomponens ugyanazokat az adatokat kapja a szülőkomponensétől, és továbbítja azokat a GrandChildComponentnek.

Ha az adatok frissülnek, a hierarchia összes összetevőjét is frissíteni kell, még akkor is, ha néhányan nem használják az adatokat. Ez nehéz és időigényes lehet, valamint növeli a hibák bevezetésének kockázatát.

3. Kód karbantarthatósága

A támasztékfúrás kódkarbantartási probléma, mivel az új komponenseknek hozzá kell férniük a hierarchián áthaladó kellékekhez. Ez hibákhoz vezethet, ha sok összetevőt kell módosítania, és következetlenségeket, ha a kellékek változnak.

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>
 );
};

Itt a ParentComponent átadja a számlálási értéket propként a ChildComponentnek, majd a GrandChildComponentnek.

De ha a szám megváltozik, vagy ha új szabály lép életbe az extra kellékek átadására, frissítenie kell a kelléket használó hierarchia minden összetevőjét. Ez a folyamat hibás, megnehezíti a kód karbantartását, és növeli a következetlenségeket vagy hibákat.

A támasztékfúrás alternatíváinak felfedezése

A React ökoszisztémában számos olyan állapotkezelési megoldás található, amelyek segítségével kiküszöbölheti a támasztékfúrás hátrányait.

React Context

A React Context egy olyan funkció, amely lehetővé teszi az állapotmegosztást az összetevők között anélkül, hogy átadná a kellékeket. Központi tárolót biztosít, amelyhez az összetevők hozzáférhetnek a useContext hook segítségével. Ez javíthatja a teljesítményt és megkönnyítheti az állapotkezelést.

Redux

Redux egy állapotkezelési könyvtár, amely egyetlen globális állapottárolót biztosít. Az összetevők műveleteken és reduktorokon keresztül érhetik el és frissíthetik az állapotot. Ez segíthet a kód rendszerezésében, és megkönnyítheti a hibakeresést.

MobX

MobX egy állapotkezelési könyvtár, amely megfigyelhető adatokat használ. Ez azt jelenti, hogy az összetevők feliratkozhatnak az állapotváltozásokra, és reagálhatnak rá. A könyvtár reaktívabbá teheti a kódot, és javíthatja a teljesítményt.

Jotai

A Jotai a React állami kezelési könyvtára, amely atomi állapotmodellt használ. Lehetővé teszi állapotatomok létrehozását, amelyekhez az összetevők hozzáférhetnek és frissíthetők.

A Jotai segítségével csökkentheti a támasztékfúrások szükségességét, és egyszerűbb és hatékonyabb államirányítási megközelítést érhet el. Minimalista dizájnja és a teljesítményre való összpontosítás lenyűgöző választássá teszi a React alkalmazások állapotkezeléséhez.

A Prop drilling egy olyan technika, amellyel adatokat adnak át a szülőkomponensektől a gyermekkomponensekhez. Hatékony az adatok megosztására, de számos hátránya van, amelyek megnehezíthetik a kód karbantartását és fejlesztését.

E hátrányok kiküszöbölésére olyan alternatívákat használhat, mint a React Context, Redux és MobX. Ezek a megoldások centralizáltabb módot biztosítanak az adatok kezelésére, ami karbantarthatóbbá és skálázhatóbbá teheti a kódot.