⊗jsrxPmSDSSC 35 of 57 menu

Zmiana struktury stanu w Redux

Pierwszy etap, który będziemy implementować dla interakcji naszej aplikacji Redux z jakimś zewnętrznym serwerem - to pobranie danych, które są na nim przechowywane przy uruchomieniu aplikacji. Ale najpierw wprowadźmy do naszej aplikacji pewne zmiany.

Otwórzmy naszą aplikację z produktami, a w niej plik productsSlice.js. Zwróć uwagę na definicję initialState. Początkowo nasz slice z produktami productsSlice - to tablica, w której znajdują się obiekty (w naszym przypadku są dwa) z danymi produktów. Po pierwsze, ponieważ teraz będziemy je ładować z serwera, to musimy je usunąć z initialState. Po drugie, będziemy wysyłać do serwera zapytania API i ważne będzie dla nas znać ich status. Biorąc pod uwagę te dwie rzeczy, przeróbmy initialState. Niech teraz to będzie po prostu obiekt z polami products początkowo nie będzie tu żadnych danych, a po prostu pusta tablica), status i error. Teraz nasz kod dla initialState stanie się nieco krótszy:

const initialState = { products: [], status: 'idle', error: null, }

Na razie ustawiliśmy status 'idle' (bezczynność), przecież początkowo nie wysyłamy żadnych zapytań, a ogólnie będzie się zmieniać i może przyjmować wartości 'loading', 'succeeded', 'failed'. Pamiętaj, że dla oznaczenia statusu możesz wybrać te nazwy, które będą dla ciebie wygodne.

Schodzimy niżej po kodzie. Po zmianie initialState, powinniśmy zmienić również kod, w którym pracujemy z tym stanem w funkcjach-reducerach. Spójrzmy na kod dla productAdded:

state.push(action.payload)

Teraz nowe produkty będziemy składać nie po prostu w state dla produktów, a w jego właściwość state.products. Dlatego, zamieńmy powyższą linię na:

state.products.push(action.payload)

Odpowiednio, wykonajmy te same zmiany dla reducera reactionClicked. Zamiast:

const currentProduct = state.find((product) => product.id === productId)

Teraz będzie:

const currentProduct = state.products.find((product) => product.id === productId)

Zamień samodzielnie state na state.products i w kodzie reducera productUpdated.

Otwórz twoją aplikację ze studentami. Otwórz w niej plik studentsSlice.js. Niech teraz twój initialState ma trzy właściwości: students, status, error - przerób go, jak pokazano na lekcji.

Wprowadź odpowiednie zmiany i niżej w kodzie. Zamień state na state.students w kodzie dla twoich trzech funkcji-reducerów.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć