Kun hallitset monimutkaisia tiloja Next-sovelluksessa, asiat voivat muuttua hankalaksi nopeasti. Perinteiset koukut kuten useState tukea valtion hallinnolle, mutta kyse on potkuriporauksesta. Prop-poraus tarkoittaa tietojen tai toimintojen siirtämistä useiden komponenttien läpi.
Parempi lähestymistapa olisi erottaa tilanhallintalogiikka komponenteista ja päivittää nämä tilat missä tahansa sovelluksessasi. Opastamme sinut Context API: n käyttämiseen, kun rakennamme yksinkertaista tehtävälistasovellusta.
Ennen kuin aloitat tehtäväluettelon
Ennen kuin voit rakentaa tehtävälistasovelluksen, tarvitset:
Perustiedot aiheesta nykyaikaiset JavaScript-operaattorit ja Reactin useState-koukku.
Ymmärrys siitä, miten tuhoaa taulukoita ja objekteja JavaScriptissä.
Solmu v16.8 tai uudempi asennettuna paikalliselle koneelle ja tuttu pakettien ylläpitäjät, kuten npm tai lankaa.
Valmiin projektin löydät osoitteesta GitHub viitteeksi ja lisätutkimukseksi.
Sovelluksen tilan ja hallinnan ymmärtäminen
Sovelluksen tila viittaa sovelluksen nykyiseen tilaan tiettynä ajankohtana. Tämä sisältää sovelluksen tuntemat ja hallitsemat tiedot, kuten käyttäjän syötteet ja tietokannasta tai API: sta (Application Programming Interface) haetut tiedot.
Ymmärtääksesi sovelluksen tilan, harkitse yksinkertaisen laskurisovelluksen mahdollisia tiloja. Ne sisältävät:
Oletustila kun laskuri on nollassa.
Lisääntynyt tila kun laskuri kasvaa yhdellä.
Vähentynyt tila kun laskuri pienenee yhdellä.
Nollaustila kun laskuri palaa oletustilaansa.
React-komponentti voi tilata tilan muutoksia. Kun käyttäjä on vuorovaikutuksessa tällaisen komponentin kanssa, hänen toiminnonsa, kuten painikkeen napsautukset, voivat hallita tilan päivityksiä.
Tämä katkelma näyttää yksinkertaisen laskurisovelluksen oletustilassaan, joka hallitsee tilaa napsautustoimintojen perusteella:
konst [laskuri, setCounter] = useState(0);
palata (
{laskuri}</h1>
Asennus ja asennus
Projektin arkisto sisältää kaksi haaraa: käynnistin ja yhteydessä. Voit käyttää aloitushaaraa pohjana rakentaaksesi projektin tai kontekstihaaraa esikatsellaksesi lopullista esittelyä.
Starter App -sovelluksen kloonaus
Aloitussovellus tarjoaa käyttöliittymän, jota tarvitset lopulliseen sovellukseen, joten voit keskittyä ydinlogiikan toteuttamiseen. Avaa pääte ja suorita seuraava komento kloonataksesi arkiston aloitushaaran paikalliseen koneeseen:
Suorita seuraava komento projektihakemistossa asentaaksesi riippuvuudet ja käynnistääksesi kehityspalvelimen:
lanka && lanka dev
Tai:
npm i && npm ajaa dev
Jos kaikki meni hyvin, käyttöliittymän pitäisi näkyä selaimessasi:
Logiikan toteuttaminen
Context API tarjoaa tavan hallita ja jakaa tilatietoja komponenttien välillä ilman manuaalista potkuriporausta.
Vaihe 1: Luo ja vie konteksti
Luo src/app/context kansio kontekstitiedoston tallentamiseen ja projektihakemiston pitämiseen hyvin järjestyksessä. Luo tähän kansioon a todo.context.jsx tiedosto, joka sisältää kaiken sovelluksen kontekstilogiikan.
Tuo luodaContext toiminto alkaen reagoida kirjasto ja kutsu se tallentamalla tulos muuttujaan:
Juuri ennen palata lausunto, luo a HandTodoInput toiminto, joka suoritetaan, kun käyttäjä kirjoittaa tehtävän. Tämä toiminto päivittää sitten tehtävä osavaltio.
Lisää luo Tehtävä toiminto, joka suoritetaan, kun käyttäjä lähettää tehtävän. Tämä toiminto päivittää tehtäviä tilaan ja määrittää uudelle tehtävälle satunnaisen tunnuksen.
Vaihe 3: Lisää tilat ja käsittelijät palveluntarjoajaan
Nyt olet luonut tilat ja kirjoittanut koodin niiden hallintaa varten, sinun on saatettava nämä tilat ja käsittelijän toiminnot saataville Palveluntarjoaja. Voit toimittaa ne objektin muodossa käyttämällä arvo omaisuutta Palveluntarjoaja komponentti.
The Palveluntarjoaja luomasi ylätason komponentti on käärittävä, jotta konteksti on koko sovelluksen käytettävissä. Tee tämä muokkaamalla src/app/page.jsx ja kääri Todos komponentin kanssa TodoContextProvider komponentti:
; </TodoContextProvider>;
Vaihe 5: Käytä Komponenttien kontekstia
Muokkaa omaa src/app/components/Todos.jsx tiedosto ja tuhoaminen tehtävät, tehtävät, HandTodoInput, ja luo Tehtävä soittamalla numeroon useTodoContext toiminto.
Päivitä nyt lomakeelementti käsittelemään lähetystapahtumaa ja muutoksia pääsyöttökenttään:
Vaihe 6: Renderöi tehtävät käyttöliittymässä
Voit nyt käyttää sovellusta tehtävän luomiseen ja lisäämiseen tehtäviä lista. Päivittääksesi näytön, sinun on kartoitettava olemassa olevat tehtäviä ja renderöi ne käyttöliittymässä. Luo ensin a src/app/components/Todo.jsx komponentti yksittäisen tehtävän säilyttämiseen.
Sisällä src/app/components/Todo.jsx komponenttia, muokkaa tai poista tehtävää kutsumalla PäivitäTask ja poistaTask toiminnot, joissa loimme src/app/context/todo.context.jsx tiedosto.
Muodostaaksesi src/app/components/Todo.jsx komponentti jokaiselle tehtävä, mene sisään src/app/components/Todos.jsx tiedosto ja ehdollisesti kartoittaa sen läpi tehtäviä heti sen jälkeen otsikko sulkeva tagi.
Tällä hetkellä sivun päivittäminen nollaa tehtävät ja hylkää kaikki luomasi. Yksi tapa korjata tämä ongelma on tallentaa tehtävät selaimen paikalliseen tallennustilaan.
Verkkotallennussovellusliittymä on parannus evästeen tallennukseen, ja sen ominaisuudet parantavat sekä käyttäjien että kehittäjien käyttökokemusta.