⊗jsrxPmSDSSC 35 of 57 menu

Αλλαγή της δομής της κατάστασης στο Redux

Το πρώτο στάδιο που θα υλοποιήσουμε για την αλληλεπίδραση της εφαρμογής μας Redux με κάποιον εξωτερικό διακομιστή - είναι η λήψη δεδομένων που είναι αποθηκευμένα σε αυτόν κατά την εκκίνηση της εφαρμογής. Αλλά πριν από αυτό, ας κάνουμε κάποιες αλλαγές στην εφαρμογή μας.

Ας ανοίξουμε την εφαρμογή μας με τα προϊόντα, και σε αυτήν το αρχείο productsSlice.js. Παρατηρήστε τον ορισμό του initialState. Αρχικά, το slice μας με τα προϊόντα productsSlice - είναι ένας πίνακας στον οποίο υπάρχουν αντικείμενα (στην περίπτωσή μας δύο) με δεδομένα προϊόντων. Πρώτον, εφόσον τώρα θα τα φορτώνουμε από τον διακομιστή, πρέπει να τα αφαιρέσουμε από το initialState. Δεύτερον, θα στέλνουμε στο διακομιστή API αιτήματα και θα είναι σημαντικό για εμάς να γνωρίζουμε την κατάστασή τους. Λαμβάνοντας υπόψη αυτά τα δύο πράγματα, ας αλλάξουμε το initialState. Ας είναι τώρα απλά ένα αντικείμενο με πεδία products (αρχικά δεν θα υπάρχουν δεδομένα εδώ, αλλά απλά ένας κενός πίνακας), status και error. Τώρα ο κώδικάς μας για το initialState θα γίνει λίγο πιο σύντομος:

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

Προς το παρόν ορίσαμε την κατάσταση 'idle' (αδράνεια), αφού αρχικά δεν στέλνουμε κανένα αίτημα, ενώ γενικά θα αλλάζει και μπορεί να πάρει τιμές 'loading', 'succeeded', 'failed'. Θυμηθείτε ότι για τον προσδιορισμό της κατάστασης μπορείτε να επιλέξετε εκείνα τα ονόματα που θα είναι βολικά για εσάς.

Κατεβαίνουμε πιο κάτω στον κώδικα. Μετά την αλλαγή του initialState, πρέπει να αλλάξουμε και τον κώδικα, στον οποίο δουλεύουμε με αυτήν την κατάσταση στις συναρτήσεις-reducers. Ας δούμε τον κώδικα για το productAdded:

state.push(action.payload)

Τώρα τα νέα προϊόντα θα τα προσθέτουμε όχι απλά στο state για τα προϊόντα, αλλά στην ιδιότητα του state.products. Επομένως, ας αντικαταστήσουμε την παραπάνω γραμμή με:

state.products.push(action.payload)

Αντίστοιχα, ας κάνουμε τις ίδιες αλλαγές για τον reducer reactionClicked. Αντί για:

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

Τώρα θα είναι:

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

Αντικαταστήστε εσείς το state με state.products και στον κώδικα του reducer productUpdated.

Ανοίξτε την εφαρμογή σας με τους μαθητές. Ανοίξτε σε αυτήν το αρχείο studentsSlice.js. Ας έχει τώρα το initialState σας τρεις ιδιότητες: students, status, error - αλλάξτε το, όπως φαίνεται στο μάθημα.

Κάντε τις αντίστοιχες αλλαγές και πιο κάτω στον κώδικα. Αντικαταστήστε το state με state.students στον κώδικα για τις τρεις σας συναρτήσεις-reducers.

Ελληνικά
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Χρησιμοποιούμε cookie για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη