⊗jsrxPmRDDA 33 of 57 menu

Stuur aksie in Redux-toepassing

Nou het ons 'n reducer om die reaksie-slice by te werk. Wat ons nou moet doen, is om die stuur van 'n aksie by te voeg wat sal aktiveer wanneer die gebruiker op die reaksieknoppie klik. Maar voordat alles ten volle kan werk, moet ons 'n paar veranderinge aanbring.

Kom ons maak ons produktoepassing oop, en daarin die lêer productsSlice.js. Kyk na die definisie van initialState. Sien jy? In die voorwerpe is daar geen eienskap met reaksies nie. Kom ons reg dit deur die tellers vir elk van die reaksies op 0 te stel:

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

Voeg self die reactions eienskap by die tweede voorwerp vir inisialisering. Hierdie eienskap moet ons ook laer in die kode by die reducer productAdded voeg, sodat nuwe produkte ook hierdie funksionaliteit het. Kom ons doen dit vir sy prepare metode:

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

Nou gaan ons voort met die stuur van die aksie. Maak die lêer UserReactions.jsx oop, en voeg dan die useDispatch hook en reactionClicked daarin in:

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

Aan die begin van die kode in die liggaam van die funksie UserReactions, skryf die eerste reël (voor const userReactions ... ):

const dispatch = useDispatch()

En plaas op die reaksieknoppie die stuur van reactionClicked wanneer daar geklik word, terwyl die produk id en die naam van die reaksie waarop geklik is, oorgedra word:

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

Wat oorbly is om nou die komponent met reaksies in die opmaak vir ons bladsye te vertoon. Laat ons dit in die lêer ProductsList.jsx doen voor die Link element:

<UserReactions product={product} />

En presies dieselfde voor die Link element op die produkbladsy in die lêer ProductPage.jsx:

<UserReactions product={product} />

Nou, toe alles op sy plek gekom het, kan ons ons toepassing begin. Kom ons probeer op die reaksieknoppies klik. Ons kan 'n nuwe produk byvoeg en ook daarop druk. Nou, waar ons ook al op die reaksieknoppies klik, sal die veranderde waardes vir hierdie produk op alle bladsye vertoon word. Kyk na die bladsy van 'n individuele produk (waarop jy op reaksies geklik het) en die bladsy met hul lys en omgekeerd, vir alle bladsye sal die aantal reaksies vir 'n spesifieke produk dieselfde wees.

Hierdie les was die laaste een in die hoofstuk oor die hantering van data in Redux. Ons het meer diepgaande met data in die Redux-store gewerk en weet nou hoe om die nodige funksionaliteit by te voeg in die toepassing en data in React komponente te gebruik.

Maak jou studentetoepassing oop. Voeg in die lêer studensSlice.js die votes eienskap by die voorwerpe vir inisialisering met die bybehorende velde. Doen dit ook vir die reducer studentAdded.

Binne die funksie UserVotes in die lêer UserVotes.jsx, skep dispatch vir die useDispatch hook en doen die stuur van die aksie voteClicked wanneer daar op die stemknoppies geklik word, gee dit die student id en die naam van die vote, soortgelyk aan wat in die les gewys is.

Vertoon die knoppies vir stemming in die opmaak vir die komponente StudentsList en StudentPage.

Afrikaans
AzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ons gebruik koekies vir die werking van die webwerf, ontleding en personalisering. Die verwerking van data geskied volgens die Privaatheidsbeleid.
aanvaar alles instel verwerp