Rakenduses Next keerukate olekute haldamisel võivad asjad kiiresti keeruliseks muutuda. Traditsioonilised konksud nagu useState abi riigi juhtkonnale, kuid tõstatada probleem rekvisiitide puurimise kohta. Prop puurimine tähendab andmete või funktsioonide edastamist läbi mitme komponendi.
Parem lähenemine oleks eraldada oma olekuhaldusloogika komponentidest ja värskendada neid olekuid kõikjal oma rakenduses. Juhendame teid, kuidas kasutada konteksti API-t, kui koostame lihtsat ülesannete loendi rakendust.
Enne ülesannete loendi alustamist
Enne ülesannete loendi rakenduse koostamist vajate:
Põhiteadmised kaasaegsed JavaScripti operaatorid ja Reageeri kasutusoleku konks.
Arusaam, kuidas massiivide ja objektide hävitamine JavaScriptis.
Sõlm v16.8 või uuem installitud teie kohalikku arvutisse ja tuttav paketihaldurid nagu npm või lõngast.
Valmis projekti leiate aadressilt GitHub viitamiseks ja edasiseks uurimiseks.
Rakenduse olekust ja haldamisest arusaamine
Rakenduse olek viitab rakenduse hetkeseisule antud ajahetkel. See hõlmab teavet, mida rakendus teab ja haldab, nagu kasutaja sisend ja andmebaasist või API-st (rakenduse programmeerimisliides) hangitud andmed.
Rakenduse oleku mõistmiseks kaaluge lihtsa loendusrakenduse võimalikke olekuid. Nad sisaldavad:
Vaikimisi olek kui loendur on nullis.
Suurenenud seisund kui loendur suureneb ühe võrra.
Vähenenud seisund kui loendur väheneb ühe võrra.
Lähtestatud olek kui loendur naaseb vaikeolekusse.
Reacti komponent saab tellida olekumuutusi. Kui kasutaja sellise komponendiga suhtleb, saavad tema toimingud (nt nupuklõpsud) hallata oleku värskendusi.
See koodilõik näitab vaikeolekus lihtsat loendurirakendust, mis haldab olekut klikkimistoimingute põhjal:
konst [loendur, setCounter] = useState(0);
tagasi (
{loendur}</h1>
Seadistamine ja installimine
Projekti repositoorium sisaldab kahte haru: starter ja Sisu. Saate kasutada lähteharu alusena projekti koostamiseks või kontekstiharu lõpliku demo eelvaate vaatamiseks.
Starter Appi kloonimine
Käivitusrakendus pakub kasutajaliidest, mida vajate lõpliku rakenduse jaoks, et saaksite keskenduda põhiloogika rakendamisele. Avage terminal ja käivitage järgmine käsk, et kloonida hoidla käivitusharu kohalikku masinasse:
Sõltuvuste installimiseks ja arendusserveri käivitamiseks käivitage projekti kataloogis järgmine käsk:
lõng && lõng dev
Või:
npm i && npm käivita dev
Kui kõik läks hästi, peaks kasutajaliides teie brauseris kuvama:
Loogika rakendamine
Konteksti API pakub võimalust hallata ja jagada komponentide vahel olekuandmeid, ilma et oleks vaja käsitsi tugipuurimist.
1. samm: looge ja eksportige kontekst
Loo src/app/context kausta kontekstifaili salvestamiseks ja projekti kataloogi hästi organiseeritud hoidmiseks. Looge selles kaustas a todo.context.jsx faili, mis sisaldab kogu rakenduse kontekstiloogikat.
Importige luuaKonteksti funktsioonist reageerida raamatukogu ja kutsuge see, salvestades tulemuse muutujasse:
Vahetult enne tagasi avaldus, loo a handTodoInput funktsioon, mis käivitub, kui kasutaja sisestab ülesande. See funktsioon värskendab seejärel ülesanne olek.
Lisa looTask funktsioon, mis käivitub, kui kasutaja esitab ülesande. See funktsioon värskendab ülesandeid olekut ja määrab uuele ülesandele juhusliku ID.
Nüüd olete loonud olekud ja kirjutanud nende haldamiseks koodi, peate need olekud ja töötleja funktsioonid kasutajale kättesaadavaks tegema. Pakkuja. Saate neid pakkuda objekti kujul, kasutades väärtus vara Pakkuja komponent.
The Pakkuja mille olete loonud, peate ülataseme komponendi pakkima, et muuta kontekst kogu rakendusele kättesaadavaks. Selleks muutke src/app/page.jsx ja mähkida Todos komponent koos TodoContextProvider komponent:
; </TodoContextProvider>;
5. samm: kasutage komponentides konteksti
Muutke oma src/app/components/Todos.jsx fail ja hävitamine ülesanded, ülesanne, handTodoInputja looTask numbrile helistades useTodoContext funktsiooni.
Nüüd värskendage vormielementi, et käsitleda esitamise sündmust ja peamise sisestusvälja muudatusi:
6. toiming: renderdage ülesanded kasutajaliideses
Nüüd saate rakendust kasutada ülesande loomiseks ja lisamiseks ülesandeid nimekirja. Kuva värskendamiseks peate kaardistama olemasoleva ülesandeid ja renderdage need kasutajaliideses. Esiteks looge a src/app/components/Todo.jsx komponent ühe ülesande hoidmiseks.
Piirkonnas src/app/components/Todo.jsx komponenti, redigeerige või kustutage ülesannet, kutsudes esile updateTask ja kustuta ülesanne funktsioonid, mille lõime src/app/context/todo.context.jsx faili.
Renderdada src/app/components/Todo.jsx komponent iga jaoks ülesanne, minge sisse src/app/components/Todos.jsx faili ja tinglikult kaardistada läbi ülesandeid kohe pärast päis sulgev silt.
Testige oma rakendust brauseris ja veenduge, et see annab oodatud tulemuse.
Ülesannete salvestamine kohalikku salvestusruumi
Praegu lähtestab lehe värskendamine ülesanded, tühistades kõik, mille olete loonud. Üks viis selle probleemi lahendamiseks on ülesannete salvestamine brauseri kohalikku salvestusruumi.
Veebisalvestuse API on küpsiste salvestamise täiustus koos funktsioonidega, mis parandavad nii kasutajate kui ka arendajate kasutuskogemust.