⊗jsrxPmRDDA 33 of 57 menu

Menghantar Action dalam Aplikasi Redux

Sekarang kita mempunyai reducer untuk mengemaskini slice dengan reaksi. Sekarang kita perlu menambah penghantaran action, yang akan dicetuskan apabila pengguna mengklik butang reaksi. Tetapi sebelum itu, untuk memastikan semuanya berfungsi sepenuhnya, kita perlu membuat beberapa perubahan.

Mari buka aplikasi produk kita, dan dalamnya fail productsSlice.js. Lihat pada takrifan initialState. Nampak? Dalam objek tiada sifat dengan reaksi. Mari kita betulkan ini, dengan menetapkan pembilang setiap reaksi kepada 0:

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

Pada objek kedua untuk pengawalan, tambahkan sifat reactions sendiri. Sifat ini juga perlu kita tambahkan di bawah dalam kod untuk reducer productAdded, supaya dalam produk baru juga terdapat fungsi sedemikian. Mari kita lakukan ini untuk kaedah preparenya:

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

Sekarang mari kita mulakan penghantaran action. Buka fail UserReactions.jsx, kemudian import hook useDispatch dan reactionClicked ke dalamnya:

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

Pada permulaan kod dalam badan fungsi UserReactions baris pertama (sebelum const userReactions ... ) tulis:

const dispatch = useDispatch()

Dan pasangkan pada butang reaksi penghantaran reactionClicked apabila diklik, pada masa yang sama id produk akan disampaikan dan nama reaksi yang diklik:

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

Sekarang tinggal untuk kita memaparkan komponen dengan reaksi dalam susun atur untuk halaman kami. Mari lakukan ini dalam fail ProductsList.jsx sebelum elemen Link:

<UserReactions product={product} />

Dan sama juga sebelum elemen Link pada halaman produk dalam fail ProductPage.jsx:

<UserReactions product={product} />

Sekarang, apabila semuanya telah berada di tempatnya, kita boleh menjalankan aplikasi kita. Mari cuba klik pada butang reaksi. Kita boleh menambah produk baru dan juga menekan pada mereka. Sekarang, di mana sahaja kita klik pada butang reaksi, nilai yang diubah akan dipaparkan untuk produk ini pada semua halaman. Lihat halaman produk individu (di mana anda mengklik pada reaksi) dan halaman dengan senarai mereka dan sebaliknya, untuk semua halaman bilangan reaksi untuk produk tertentu akan sama.

Pelajaran ini adalah yang terakhir dalam bab mengenai bekerja dengan data dalam Redux. Kami bekerja lebih mendalam dengan data dalam Redux store dan sekarang tahu, bagaimana untuk menambah fungsi yang kita perlukan dalam aplikasi dan menggunakan data dalam komponen React.

Buka aplikasi anda dengan pelajar. Dalam fail studensSlice.js, tambahkan sifat votes kepada objek untuk pengawalan dengan medan yang sepadan. Lakukan ini dan untuk reducer studentAdded.

Di dalam fungsi UserVotes dalam fail UserVotes.jsx, gunakan dispatch untuk hook useDispatch dan lakukan penghantaran action voteClicked apabila klik pada butang undian, sampaikan kepadanya id pelajar dan nama vote, serupa dengan yang ditunjukkan dalam pelajaran.

Paparkan butang untuk undian dalam susun atur untuk komponen StudentsList dan StudentPage.

Melayu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Kami menggunakan kuki untuk operasi laman web, analisis dan personalisasi. Pemprosesan data dijalankan mengikut Polisi Kerahsiaan.
terima semua tataletak tolak