⊗jsrxPmRDARR 32 of 57 menu

Menambah Reducer kepada Aplikasi Redux

Dalam pelajaran lepas, kami mencipta komponen UserReaction supaya setiap produk juga mempunyai reaksi pengguna. Sekarang kita perlu menulis reducer yang akan mengendalikan pembilang reaksi apabila pengguna mengklik tompok reaksi tertentu.

Mari buka aplikasi produk kami, dan dalamnya fail productsSlice.js yang mengandungi semua reducer. Sekarang dalam sifat reducers kami akan cipta satu lagi reducer reactionClicked (kami boleh letakkannya di hadapan - sebelum productAdded, walaupun tidak mengapa). Seperti biasa, kami akan berikan kepadanya parameter state dan action:

reactionClicked(state, action) {},

Sekarang di dalam kurungan kerinting, yang kami tinggalkan kosong pada langkah sebelumnya, kami akan tulis kod untuknya. Pertama, kami akan ekstrak id produk dari payload objek action dan nama reaksi:

const { productId, reaction } = action.payload

Kemudian dari state yang diberikan, dapatkan produk yang diperlukan:

const currentProduct = state.find(product => product.id === productId)

Dan jika produk tersebut wujud, tambahkan nilai reaksi yang diberikan sebanyak 1:

if (currentProduct) { currentProduct.reactions[reaction]++ }

Itu sahaja, kod kami untuk reactionClicked sudah siap:

reactionClicked(state, action) { const { productId, reaction } = action.payload const currentProduct = state.find(product => product.id === productId) if (currentProduct) { currentProduct.reactions[reaction]++ } },

Mari pada akhir fail, tambahkan eksport action creator yang diperoleh:

export const { reactionClicked, productAdded, productUpdated } = productsSlice.actions

Terdapat dua perkara penting yang perlu diperhatikan di sini. Seperti yang anda ingat dari pelajaran sebelumnya - mengemas kini nilai secara langsung dalam kod reducer adalah tidak dibenarkan (lihat baris ini: reactions[reaction]++), tetapi kami boleh melakukannya kerana kami melakukannya dalam createSlice, yang menggunakan pustaka Immer. Ia akan memastikan untuk menukar kod kami kepada kemas kini nilai yang "selamat". Ini membolehkan kami menulis perkara kompleks dengan cara yang lebih mudah.

Seterusnya, yang perlu diingat - objek action harus mengandungi maklumat minimum yang mungkin - hanya untuk menunjukkan apa yang berlaku. Jangan lakukan sebarang pengiraan di dalamnya. Semua pengiraan untuk mengemas kini state harus dilakukan dalam reducer, di sini anda boleh menulis sebarang logik yang diperlukan untuk melakukannya.

Buka aplikasi pelajar anda dan dalam fail studentsSlice.js tambahkan satu lagi reducer voteClicked dalam medan reducers, seperti yang ditunjukkan dalam pelajaran. Tulis kod untuknya. Tugas reducer anda - apabila diklik, tambahkan nilai vote (atau undi), yang diklik, untuk pelajar tersebut, sebanyak 1.

Pada akhir fail, jangan lupa untuk mengeksport action creator voteClicked yang diperoleh.

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