Poraus voi olla hyödyllinen temppu, mutta sinun on varottava joitain hankalia sudenkuoppia.

Tietojen hallinta ja vahvojen, ylläpidettävien sovellusten rakentaminen ovat tärkeitä ohjelmistokehitystaitoja. Yleinen tapa moduloida React-sovelluksiasi on käyttää potkuriporausta, joka auttaa siirtämään tietoja komponenttipuuhun.

Mutta kun projektit laajenevat, potkuriporauksella voi olla haittapuolensa. Tutustu potkurin poraukseen liittyviin ongelmiin ja selvitä, mitä vaihtoehtoja on saatavilla.

Prop-porauksen ymmärtäminen

Prop-poraus on tekniikka, joka välittää dataa komponenttipuuhun rekvisiittana riippumatta siitä, tarvitsevatko välikomponentit tietoja vai eivät.

Poraus sisältää rekvisiitta siirtämisen vanhemmalta sen alikomponenteille ja hierarkiassa alemmas. Päätavoitteena on mahdollistaa puun alemmilla tasoilla olevien komponenttien pääsy ja käyttö korkeampien komponenttien tarjoamaan dataan.

Prop-porauksen huonot puolet

Vaikka potkuriporaus ratkaisee tiedon jakamisen ongelman, se tuo mukanaan useita haittoja, jotka voivat haitata koodin ylläpidettävyyttä ja kehitystehokkuutta.

instagram viewer

1. Lisääntynyt monimutkaisuus

Sovelluksen kasvaessa potkuriporausta on vaikeampi hallita. Tämä voi johtaa monimutkaiseen komponenttiriippuvuuksien verkkoon, mikä tekee koodista vaikea ymmärtää ja muuttaa.

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

Täällä tiedot huipputason ParentComponentista siirtyvät GreatGrandChildComponentiin kahden välikomponentin kautta.

Kun komponenttihierarkia syvenee ja yhä useammat komponentit ovat riippuvaisia ​​tukiasemasta, tietovirran jäljittäminen ja hallinta on vaikeampaa.

2. Tiukka kytkentä

Tämä tapahtuu, kun komponentit ovat riippuvaisia ​​toisistaan ​​​​rekvisiitta, mikä vaikeuttaa niiden vaihtamista tai uudelleenkäyttöä. Tämä voi vaikeuttaa muutosten tekemistä yhteen komponenttiin vaikuttamatta muihin.

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

Tässä molemmat alikomponentit saavat samat tiedot emokomponentistaan ​​ja välittävät ne GrandChildComponentille.

Jos tiedot päivittyvät, myös kaikki hierarkian komponentit tarvitsevat päivitystä, vaikka jotkut eivät käyttäisikään tietoja. Tämä voi olla vaikeaa ja aikaa vievää, ja se lisää myös virheiden leviämisen riskiä.

3. Koodin ylläpidettävyys

Prop poraus on koodin ylläpitoongelma, koska uudet komponentit tarvitsevat pääsyn hierarkian läpi kulkeviin rekvisiittauksiin. Tämä voi johtaa virheisiin, jos joudut muokkaamaan monia komponentteja, ja epäjohdonmukaisuuksiin, jos rekvisiitta muuttuu.

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

Tässä ParentComponent välittää laskenta-arvon tukina ChildComponentille ja sitten GrandChildComponentille.

Mutta jos määrä muuttuu tai jos ylimääräisten rekvisiittausten välittämiseen on uusi sääntö, sinun on päivitettävä jokainen komponenttia käyttävä hierarkia. Tämä prosessi on virhealtis, mikä tekee koodin ylläpidosta vaikeaa ja lisää epäjohdonmukaisuuksia tai virheitä.

Vaihtoehtojen tutkiminen potkuriporaukselle

React-ekosysteemissä on monia valtionhallintaratkaisuja, joiden avulla voit voittaa potkurin porauksen haitat.

Reagoi konteksti

React Context on ominaisuus, joka mahdollistaa tilan jakamisen komponenttien välillä ilman rekvisiitta. Se tarjoaa keskitetyn myymälän, johon komponentit pääsevät käsiksi useContext-koukun avulla. Tämä voi parantaa suorituskykyä ja helpottaa tilan hallintaa.

Redux

Redux on tilanhallintakirjasto, joka tarjoaa yhden globaalin tilavaraston. Komponentit voivat päästä käsiksi ja päivittää tilaa toimien ja vähentäjien avulla. Tämä voi auttaa pitämään koodisi järjestyksessä ja helpottaa virheenkorjausta.

MobX

MobX on tilanhallintakirjasto, joka käyttää havaittavaa dataa. Tämä tarkoittaa, että komponentit voivat liittyä tilan muutoksiin ja reagoida niihin. Kirjasto voi tehdä koodistasi reaktiivisemman ja parantaa suorituskykyä.

Jotai

Jotai on Reactin valtionhallinnon kirjasto, joka käyttää atomitilamallia. Sen avulla voit luoda tilaatomeja, joita komponentit voivat käyttää ja päivittää.

Jotain avulla voit vähentää potkuriporauksen tarvetta ja saavuttaa virtaviivaisemman ja tehokkaamman valtionhallinnon. Sen minimalistinen muotoilu ja suorituskykyyn keskittyminen tekevät siitä vakuuttavan valinnan React-sovellusten tilan hallintaan.

Prop drilling on tekniikka tiedon siirtämiseksi yläkomponenteista alakomponentteihin. Se on tehokas tiedon jakamiseen, mutta siinä on useita haittoja, jotka voivat vaikeuttaa koodin ylläpitämistä ja kehittämistä.

Voit voittaa nämä haitat käyttämällä vaihtoehtoja, kuten React Context, Redux ja MobX. Nämä ratkaisut tarjoavat keskitetymmän tavan hallita tietoja, mikä voi tehdä koodista helpommin ylläpidettävän ja skaalautuvan.