⊗jsrxPmRDDA 33 of 57 menu

Action küldése Redux alkalmazásban

Most már van egy reducerünk a reakciók slice frissítéséhez. Most hozzá kell adnunk egy action küldést, amely akkor aktiválódik, amikor a felhasználó a reakció gombra kattint. De először, hogy minden teljesen működjön, néhány módosítást kell eszközölnünk.

Nyissuk meg a termék alkalmazásunkat, és benne a productsSlice.js fájlt. Nézzük meg a initialState definícióját. Látjátok? Az objektumokban nincs reakciók tulajdonság. Javítsuk ezt meg úgy, hogy minden reakció számlálóját 0-ra állítjuk:

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

A második inicializáló objektumhoz adjátok hozzá magatok a reactions tulajdonságot. Ezt a tulajdonságot alulra is hozzá kell adnunk a productAdded reducer kódjához, hogy az új termékekben is legyen ilyen funkcionalitás. Tegyük ezt meg a prepare metódusánál:

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

Most pedig folytassuk az action küldéssel. Nyissuk meg a UserReactions.jsx fájlt, majd importáljunk bele a useDispatch hookot és a reactionClicked-t:

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

A kód elején, a UserReactions függvény testében az első sorban (a const userReactions ... elé) írjunk:

const dispatch = useDispatch()

És a reakció gombra tegyünk egy reactionClicked küldést kattintáskor, miközben átadjuk a termék id-ját és annak a reakciónak a nevét, amire kattintottak:

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

Már csak az maradt, hogy a reakciók komponensét megjelenítsük a lapjainkhoz. Tegyük ezt meg a ProductsList.jsx fájlban a Link elem elött:

<UserReactions product={product} />

És pontosan ugyanígy a Link elem elött a termék oldalon a ProductPage.jsx fájlban:

<UserReactions product={product} />

Most, hogy minden a helyére került, indíthatjuk az alkalmazásunkat. Próbáljunk meg rákattintani a reakció gombokra. Adhatunk hozzá új terméket és szintén megnyomogathatjuk őket. Most, bárhol kattintunk a reakció gombokra, a módosított értékek meg fognak jelenni az adott termékhez minden oldalon. Nézzétek meg az egyes termék oldalt (ahol a reakciókat kattintgattátok) és a listájukat és fordítva, minden oldalon a reakciók száma az adott termékhez ugyanannyi lesz.

Ez a lecke záró volt az adatok kezelésével kapcsolatos fejezetben a Redux-ban. Mélyebben dolgoztunk az adatokkal a Redux store-ban és most már tudjuk, hogyan adjuk hozzá a szükséges funkcionalitást az alkalmazáshoz és hogyan használjuk az adatokat a React komponensekben.

Nyisd meg a diák alkalmazásodat. A studensSlice.js fájlban az inicializáló objektumokhoz add hozzá a votes tulajdonságot a megfelelő mezőkkel. Tedd ezt meg a studentAdded reducerhez is.

A UserVotes függvényen belül a UserVotes.jsx fájlban hozz létre egy dispatch-et a useDispatch hookhoz és készíts el egy voteClicked action küldést a szavazás gombokra kattintáskor, add át neki a diák id-ját és a vote nevét, hasonlóan ahhoz, ahogyan a leckében láttátok.

Jelenítsd meg a szavazás gombokat a StudentsList és a StudentPage komponenseknél.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás