⊗jsrxPmRDDA 33 of 57 menu

Mengirim Action dalam Aplikasi Redux

Sekarang kita memiliki reducer untuk memperbarui slice dengan reaksi. Saat ini kita perlu menambahkan pengiriman action, yang akan terpicu ketika pengguna mengklik tombol reaksi. Namun sebelumnya, agar semuanya berfungsi sepenuhnya, kita perlu melakukan beberapa perubahan.

Mari buka aplikasi produk kita, dan di dalamnya file productsSlice.js. Perhatikan definisi initialState. Lihat? Di dalam objek-objek tidak ada properti dengan reaksi. Mari kita perbaiki ini, dengan mengatur penghitung setiap reaksi ke 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 inisialisasi, tambahkan properti reactions sendiri. Properti ini juga perlu kita tambahkan ke bawah dalam kode untuk reducer productAdded, agar produk baru juga memiliki fungsionalitas tersebut. Mari kita lakukan ini untuk method prepare-nya:

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 lanjutkan ke pengiriman action. Buka file UserReactions.jsx, lalu impor hook useDispatch dan reactionClicked ke dalamnya:

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

Di awal kode dalam tubuh fungsi UserReactions baris pertama (sebelum const userReactions ... ) tuliskan:

const dispatch = useDispatch()

Dan pasang pada tombol reaksi pengiriman reactionClicked saat diklik, dimana akan diteruskan id produk 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 menampilkan komponen dengan reaksi dalam markup untuk halaman kita. Mari lakukan ini di file ProductsList.jsx sebelum elemen Link:

<UserReactions product={product} />

Dan sama persis sebelum elemen Link pada halaman produk di file ProductPage.jsx:

<UserReactions product={product} />

Sekarang, ketika semuanya sudah pada tempatnya, kita dapat menjalankan aplikasi kita. Mari coba klik tombol-tombol reaksi. Kita bisa menambahkan produk baru dan juga menekan tombol-tombol tersebut. Sekarang, di mana pun kita mengklik tombol reaksi, nilai yang diubah akan ditampilkan untuk produk tersebut di semua halaman. Lihatlah halaman produk individual (di mana Anda mengklik reaksi) dan halaman daftar produk serta sebaliknya, untuk semua halaman jumlah reaksi untuk produk tertentu akan sama.

Pelajaran ini adalah yang terakhir dalam bab tentang bekerja dengan data di Redux. Kita telah bekerja lebih mendalam dengan data di Redux store dan sekarang tahu, bagaimana menambahkan fungsionalitas yang kita butuhkan ke dalam aplikasi dan menggunakan data dalam komponen React.

Buka aplikasi Anda dengan siswa. Di file studensSlice.js, tambahkan properti votes ke objek untuk inisialisasi dengan field yang sesuai. Lakukan ini juga untuk reducer studentAdded.

Di dalam fungsi UserVotes di file UserVotes.jsx, buatlah dispatch untuk hook useDispatch dan lakukan pengiriman aksi voteClicked pada klik tombol voting, berikan padanya id siswa dan nama vote, serupa dengan yang ditunjukkan dalam pelajaran.

Tampilkan tombol untuk voting dalam markup untuk komponen StudentsList dan StudentPage.

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