⊗jsrxPmRDDA 33 of 57 menu

Sending av action i Redux-applikasjonen

Nå har vi en reducer for å oppdatere slice med reaksjoner. Nå trenger vi å legge til sending av action, som vil utløses når brukeren klikker på en reaksjonsknapp. Men først, for at alt skal fungere fullstendig, må vi gjøre et par endringer.

La oss åpne vår produktapplikasjon, og i den filen productsSlice.js. Se på definisjonen av initialState. Ser du? I objektene mangler det en egenskap for reaksjoner. La oss ordne dette, ved å sette tellerne for hver av reaksjonene til 0:

{ id: '1', title: 'Product1', desc: 'This is an amazing product', price: '300', amount: '30', reactions: { good: 0, soso: 0, bad: 0, }, },

I det andre objektet for initialisering, legg til egenskapen reactions selv. Denne egenskapen må vi også legge til lenger ned i koden for reduceren productAdded, så nye produkter også har denne funksjonaliteten. La oss gjøre dette for dens metode prepare:

prepare(title, desc, price, amount, sellerId) { return { payload: { id: nanoid(), title, desc, price, amount, seller: sellerId, reactions: { good: 0, soso: 0, bad: 0, }, }, } },

La oss nå gå videre til sending av action. La oss åpne filen UserReactions.jsx, deretter importere hooken useDispatch og reactionClicked:

import { useDispatch } from 'react-redux' import { reactionClicked } from './productsSlice'

I begynnelsen av koden i kroppen av funksjonen UserReactions som første linje (før const userReactions ... ) skriver vi:

const dispatch = useDispatch()

Og legger til sending av reactionClicked på reaksjonsknappen ved klikk, hvor vi vil sende med produktets id og navnet på reaksjonen som ble klikket på:

<button key={name} type="button" className="reaction-button" onClick={() => dispatch(reactionClicked({ productId: product.id, reaction: name })) } > {image} {product.reactions[name]} </button>

Nå gjenstår det å vise komponenten med reaksjoner i renderingen for sidene våre. La oss gjøre dette i filen ProductsList.jsx før Link-elementet:

<UserReactions product={product} />

Og på nøyaktig samme måte før Link-elementet på produktsiden i filen ProductPage.jsx:

<UserReactions product={product} />

Nå, når alt er på plass, kan vi starte applikasjonen vår. La oss prøve å klikke på reaksjonsknappene. Vi kan legge til et nytt produkt og også trykke på dem. Nå, uansett hvor vi klikker på reaksjonsknappene, vil de endrede verdiene vises for det aktuelle produktet på alle sider. Se på siden for et enkelt produkt (der du klikket på reaksjoner) og siden med deres liste og omvendt, for alle sider vil antall reaksjoner for et spesifikt produkt være det samme.

Denne leksjonen var den avsluttende i kapittelet om arbeid med data i Redux. Vi jobbet mer inngående med data i Redux store og vet nå hvordan vi legger til nødvendig funksjonalitet i applikasjonen og bruker data i React komponenter.

Åpne applikasjonen din med studenter. I filen studensSlice.js, legg til egenskapen votes i objektene for initialisering med de tilhørende feltene. Gjør dette også for reduceren studentAdded.

Inne i funksjonen UserVotes i filen UserVotes.jsx, opprett dispatch for hooken useDispatch og gjør sending av actionen voteClicked ved klikk på avstemningsknappene, send studentens id og navnet på vote, på samme måte som vist i leksjonen.

Vis knappene for avstemning i renderingen for komponentene StudentsList og StudentPage.

Norsk
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Vi bruker informasjonskapsler for nettstedets funksjonalitet, analyse og personalisering. Behandling av data foregår i henhold til Personvernerklæringen.
godta alle tilpass avvis