⊗jsrxPmWFDA 18 of 57 menu

Penghantaran Action dan Hook useDispatch dalam Redux

Kami telah melaksanakan hampir semua komponen untuk aplikasi Redux berfungsi. Yang tinggal hanyalah memahami cara menghantar action dari komponen React. Mari kita mulakan.

Buka aplikasi produk kami. Dalam borang komponen NewProductForm, kami mempunyai butang untuk menyimpan data produk baru. Mari tambahkan pengendali klik padanya. Biarkan pengendali onSaveProductClick diaktifkan apabila diklik:

<button type="button" onClick={onSaveProductClick}> save </button>

Apabila mencipta produk baru, kami memerlukan id baru untuknya. Kami akan menjanakannya menggunakan pustaka terkenal nanoid. By the way, ia tidak perlu dipasang, kerana ia sudah disertakan dengan pakej RTK. Mari tambahkan nanoid dalam import:

import { nanoid } from '@reduxjs/toolkit'

Kami juga ingat bahawa satu-satunya cara untuk mengubah state - adalah dengan memanggil kaedah dispatch, yang ada pada store dan menyampaikan objek action. Untuk mencapai kaedah ini, kami akan menggunakan hook React-Redux useDispatch. Mari importnya:

import { useDispatch } from 'react-redux'

Dalam kod fungsi NewProductForm, mari isytiharkan constant dispatch untuknya sejurus selepas kami mengisytiharkan constant untuk state lokal kami:

const dispatch = useDispatch()

Kami juga perlu mengimport action creator productAdded, yang kami peroleh dalam pelajaran lepas:

import { productAdded } from './productsSlice'

Sekarang kami boleh menulis fungsi pengendali onSaveProductClick. Mari lakukan ini sebelum arahan return:

const onSaveProductClick = () => {}

Di dalam fungsi, kami memanggil dispatch, membentuk objek action, di dalam sifat payload yang akan dimasukkan id yang dijana, nama, keterangan, harga dan kuantiti produk. Semua data ini kami ambil dari state lokal. Pada masa yang sama, pada permulaan kami menyemak dalam keadaan sama ada semua medan diisi - hanya dalam kes ini kami memanggil dispatch. Pada akhir kod fungsi, kami mengembalikan state lokal kepada keadaan asal:

const onSaveProductClick = () => { if (name && desc && price && amount) { dispatch( productAdded({ id: nanoid(), name, desc, price, amount }) ) setName('') setDesc('') setPrice(0) setAmount(0) } }

Sekarang mari lancarkan aplikasi kami, masukkan data ke dalam medan borang dan tekan butang simpan. Hooray, produk baru muncul di bahagian bawah halaman. Dengan membuka Redux DevTools, dan di dalamnya tab Inspector, kami melihat bahawa di sebelah kiri selain @@INIT, action kami juga muncul products/productAdded. Dan di bahagian kanan kami boleh klik pada tab Action dan State, sambil menukar antara @@INIT dan products/productAdded. Sekarang kami melihat bahawa produk baru kami ditambah. Juga pada tab Action kami melihat action, yang dijana secara automatik menggunakan createSlice (klik, sebagai contoh, pada Raw). Hooray: kami tidak perlu menulisnya secara manual.

Buka aplikasi pelajar anda, kemudian fail NewStudentForm.jsx, pasang pengendali klik pada butang simpan.

Tulis semua import yang diperlukan dan tulis fungsi-pengendali onSaveStudentClick, menggunakan kaedah dispatch seperti yang ditunjukkan dalam pelajaran.

Lancarkan aplikasi, masukkan data ke dalam medan borang dan tekan pada butang simpan. Pastikan bahawa pelajar baru telah ditambah di bahagian bawah halaman.

Buka Redux DevTools dan telusuri tab Action dan State, pastikan bahawa objek baru dengan pelajar ditambah. Lihat pada objek action yang telah dijana, hantarkannya dalam jawapan untuk tugas ini.

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