Tvarkant sudėtingas būsenas programoje Next, viskas gali greitai pasidaryti sudėtinga. Tradiciniai kabliukai kaip useState pagalba su valstybės valdymu, bet keliamas atramos gręžimo klausimas. Atramos gręžimas reiškia duomenų arba funkcijų perdavimą per kelis komponentus.
Geresnis būdas būtų atskirti būsenos valdymo logiką nuo komponentų ir atnaujinti šias būsenas iš bet kurios programos vietos. Sukurdami paprastą užduočių sąrašo programą, paaiškinsime, kaip naudoti Context API.
Prieš pradėdami sudaryti darbų sąrašą
Prieš kurdami užduočių sąrašo programą, jums reikės:
Pagrindinės žinios apie Šiuolaikiniai JavaScript operatoriai ir Reakcijos naudojimasState kabliukas.
Supratimas, kaip sunaikinti masyvus ir objektus JavaScript.
Mazgas 16.8 ar naujesnė versija įdiegta jūsų vietiniame kompiuteryje ir susipažinę su paketų tvarkytojai kaip npm arba verpalų.
Baigtą projektą galite rasti adresu GitHub nuorodai ir tolesniam tyrinėjimui.
Programos būsenos ir valdymo supratimas
Programos būsena nurodo esamą programos būklę tam tikru momentu. Tai apima informaciją, kurią programa žino ir tvarko, pvz., vartotojo įvestį ir duomenis, paimtus iš duomenų bazės arba API (programų programavimo sąsajos).
Norėdami suprasti programos būseną, apsvarstykite galimas paprastos skaitiklio programos būsenas. Jie įtraukia:
Numatytoji būsena kai skaitiklis yra ties nuliu.
Padidėjusi būsena kai skaitiklis padidėja vienu.
Sumažėjusi būsena kai skaitiklis sumažėja vienu.
Iš naujo nustatyta būsena kai skaitiklis grįš į numatytąją būseną.
„React“ komponentas gali užsisakyti būsenos pokyčius. Kai vartotojas sąveikauja su tokiu komponentu, jo veiksmai, pvz., mygtukų paspaudimai, gali valdyti būsenos naujinimus.
Šiame fragmente rodoma paprasta skaitiklio programa (numatytoji būsena), kuri valdo būseną pagal paspaudimo veiksmus:
konst [skaitiklis, setCounter] = useState(0);
grąžinti (
{skaitiklis}</h1>
Sąranka ir diegimas
Projekto saugyklą sudaro dvi šakos: starteris ir kontekste. Galite naudoti pradinę šaką kaip pagrindą projektui kurti arba kontekstinę šaką, kad galėtumėte peržiūrėti galutinę demonstracinę versiją.
Programėlės Starter klonavimas
Pradinėje programoje pateikiama vartotojo sąsaja, kurios jums prireiks galutinei programai, kad galėtumėte sutelkti dėmesį į pagrindinės logikos įgyvendinimą. Atidarykite terminalą ir paleiskite šią komandą, norėdami klonuoti pradinę saugyklos šaką į vietinį kompiuterį:
Vykdykite šią komandą projekto kataloge, kad įdiegtumėte priklausomybes ir paleistumėte kūrimo serverį:
yarn & & yarn dev
Arba:
npm i && npm paleisti dev
Jei viskas buvo gerai, jūsų naršyklėje turėtų būti rodoma vartotojo sąsaja:
Logikos įgyvendinimas
„Context API“ suteikia galimybę valdyti ir dalytis būsenos duomenimis tarp komponentų, nereikia gręžti rankiniu būdu.
1 veiksmas: sukurkite ir eksportuokite kontekstą
Sukurti src/app/context aplanką, kad išsaugotumėte kontekstinį failą ir gerai sutvarkytumėte projekto katalogą. Šiame aplanke sukurkite a todo.context.jsx failą, kuriame bus visa programos konteksto logika.
Importuoti sukurti kontekstą funkcija iš reaguoti biblioteką ir iškvieskite ją, išsaugodami rezultatą kintamajame:
Norėdami atlikti programos CRUD (Kurti, skaityti, atnaujinti, ištrinti) veiksmus, turėsite sukurti būsenas ir jas valdyti naudodami Teikėjas komponentas.
Prieš pat grąžinti pareiškimą, sukurkite a rankenaTodoInput funkcija, kuri veiks, kai vartotojas įves užduotį. Tada ši funkcija atnaujina užduotis valstybė.
Pridėti sukurti užduotį funkcija, kuri veiks, kai vartotojas pateiks užduotį. Ši funkcija atnaujina užduotys būseną ir naujai užduočiai priskiria atsitiktinį ID.
3 veiksmas: pridėkite būsenas ir tvarkykles prie teikėjo
Dabar jūs sukūrėte būsenas ir parašėte kodą, kad galėtumėte jas valdyti. Turite padaryti šias būsenas ir tvarkyklės funkcijas prieinamas Teikėjas. Galite pateikti juos objekto pavidalu, naudodami vertė nuosavybė Teikėjas komponentas.
The Teikėjas kurį sukūrėte, turite apvynioti aukščiausio lygio komponentą, kad kontekstas būtų pasiekiamas visai programai. Norėdami tai padaryti, redaguokite src/app/page.jsx ir apvyniokite Todos komponentas su „TodoContextProvider“. komponentas:
; </TodoContextProvider>;
5 veiksmas: naudokite kontekstą komponentuose
Redaguokite savo src/app/components/Todos.jsx failą ir sunaikinimą užduotis, užduotis, rankenaTodoInput, ir sukurti užduotį per skambutį į useTodoContext funkcija.
Dabar atnaujinkite formos elementą, kad galėtumėte apdoroti pateikimo įvykį ir pagrindinio įvesties lauko pakeitimus:
6 veiksmas. Pateikite užduotis vartotojo sąsajoje
Dabar galite naudoti programą norėdami sukurti ir pridėti užduotį užduotys sąrašą. Norėdami atnaujinti ekraną, turėsite susieti esamą užduotys ir pateikti juos vartotojo sąsajoje. Pirmiausia sukurkite a src/app/components/Todo.jsx komponentas, skirtas vienam darbui laikyti.
Per src/app/components/Todo.jsx komponentą, redaguoti arba ištrinti užduotį iškviesdami UpdateTask ir ištrinti užduotį funkcijas, kurias sukūrėme src/app/context/todo.context.jsx failą.
Norėdami pateikti src/app/components/Todo.jsx komponentas kiekvienam užduotis, eikite į src/app/components/Todos.jsx failą ir sąlygiškai susieti per užduotys iškart po antraštę uždarymo žyma.
Išbandykite programą naršyklėje ir patvirtinkite, kad ji duoda laukiamą rezultatą.
Užduočių išsaugojimas vietinėje saugykloje
Šiuo metu atnaujinus puslapį bus iš naujo nustatytos užduotys ir bus atmestos visos jūsų sukurtos. Vienas iš būdų išspręsti šią problemą yra saugoti užduotis naršyklės vietinėje saugykloje.
Žiniatinklio saugyklos API yra slapukų saugojimo patobulinimas su funkcijomis, kurios pagerina naudotojų ir kūrėjų patirtį.