⊗jsrxPmWFRAA 17 of 57 menu

Reducer και action στο Redux

Στο προηγούμενο μάθημα ολοκληρώσαμε τη φόρμα για προσθήκη προϊόντος και την εμφανίσαμε στην κύρια σελίδα. Αλλά τα προστιθέμενα δεδομένα δεν αποθηκεύονται ακόμα, με άλλα λόγια το νέο προϊόν δεν προστίθεται στα υπάρχοντα στο store. Ας το διορθώσουμε αυτό.

Για αρχή, στην εφαρμογή μας με τα προϊόντα θα ανοίξουμε το αρχείο productsSlice.jsx και θα γράψουμε στην ιδιότητα reducer για την createSlice τη συνάρτηση productAdded, η οποία θα ασχολείται με την προσθήκη του προϊόντος στο store με βάση τα τρέχοντα state και action που της μεταβιβάζονται. Πρέπει να σημειωθεί ότι εδώ μας μεταβιβάζεται όχι ολόκληρο το state, αλλά μόνο εκείνο το μέρος του που αντιστοιχεί στα προϊόντα (το slice products γνωρίζει μόνο γι' αυτό). Το αντικείμενο με το νέο προϊόν θα βρίσκεται στην ιδιότητα payload του αντικειμένου action, το οποίο θα δημιουργείται από τον χειριστή κατά το πάτημα του κουμπιού αποθήκευσης στη φόρμα. Ως αποτέλεσμα, ο reducer productAdded θα φαίνεται στον κώδικα της createSlice έτσι:

const productsSlice = createSlice({ name: 'products', initialState, reducers: { productAdded(state, action) { state.push(action.payload) }, }, })

Και τι γίνεται με το action; Στην αρχή του σεφαρμογή αναφέραμε ότι το action είναι ένα συμβάν, που παρουσιάζεται ως αντικείμενο, που περιγράφει τι συνέβη στην εφαρμογή. Μιλήσαμε επίσης για το ότι μπορούμε να χρησιμοποιήσουμε τη συνάρτηση action creator, η οποία θα μας δημιουργεί ένα τέτοιο αντικείμενο, για παράδειγμα έτσι:

const addProduct = newProduct => { return { type: 'products/productAdded', payload: newProduct } }

Τα καλά νέα είναι ότι δεν χρειάζεται να κάνουμε τίποτα, αυτό θα το κάνει για μας η συνάρτηση createSlice, που χρησιμοποιούμε. Μόλις γράψουμε τον reducer, αυτήματα θα δημιουργήσει για μας ένα action creator με το ίδιο όνομα. Εμείς μένει μόνο να εξάγουμε το action creator που προέκυψε για περαιτέρω χρήση σε components. Ας το κάνουμε αυτό στο τέλος του αρχείου πριν την εξαγωγή του reducer, έτσι:

export const { productAdded } = productsSlice.actions export default productsSlice.reducer

Ανοίξτε την εφαρμογή σας με τους φοιτητές, και μετά το αρχείο studentsSlice.jsx, συμπληρώστε την τιμή του πεδίου reducer για την createSlice, όπως φαίνεται στο μάθημα.

Προσθέστε στο τέλος του αρχείου studentsSlice.jsx εξαγωγή της συνάρτησης action creator που προέκυψε.

Ελληνικά
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 για τη λειτουργία του ιστότοπου, την ανάλυση και την εξατομίκευση. Η επεξεργασία των δεδομένων γίνεται σύμφωνα με την Πολιτική Απορρήτου.
αποδοχή όλων ρύθμιση απόρριψη