⊗jsrxPmRDDA 33 of 57 menu

Redux Uygulamasında Action Gönderme

Artık reaksiyonlar slice'ını güncellemek için bir reducer'ımız var. Şimdi, kullanıcının reaksiyon butonuna tıkladığında tetiklenecek bir action göndermeyi eklememiz gerekiyor. Ama öncelikle, her şeyin tamamen çalışması için birkaç değişiklik yapmamız gerekiyor.

Ürün uygulamamızı açalım ve içindeki productsSlice.js dosyasını açalım. initialState tanımına bakın. Gördünüz mü? Nesnelerde reaksiyonlar özelliği yok. Bunu düzeltelim, her bir reaksiyonun sayacını 0 olarak ayarlayalım:

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

İkinci başlatma nesnesine reactions özelliğini kendiniz ekleyin. Aynı özelliği, yeni ürünlerde de bu işlevselliğin olması için, aşağıdaki productAdded reducer'ının koduna da eklememiz gerekiyor. Bunu onun prepare metodu için yapalım:

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

Şimdi action göndermeye başlayalım. UserReactions.jsx dosyasını açalım, ardından içine useDispatch kancasını ve reactionClicked'ı içe aktaralım:

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

Kodun başında, UserReactions fonksiyonunun gövdesinde ilk satır olarak (const userReactions ... 'ten önce) yazalım:

const dispatch = useDispatch()

Ve reaksiyon butonuna tıklandığında reactionClicked'ı göndermeyi ekleyelim, bu sırada ürünün id'si ve tıklanan reaksiyonun adı iletilir:

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

Şimdi yapmamız gereken, reaksiyonları içeren bileşeni sayfalarımızın görsel tasarımında göstermek. Bunu ProductsList.jsx dosyasında Link öğesinden önce yapalım:

<UserReactions product={product} />

Ve aynı şekilde, ürün sayfasında Link öğesinden önce ProductPage.jsx dosyasında:

<UserReactions product={product} />

Şimdi her şey yerli yerine oturduğuna göre, uygulamamızı çalıştırabiliriz. Reaksiyon butonlarına tıklamayı deneyelim. Yeni bir ürün ekleyip onlara da tıklayabiliriz. Artık reaksiyon butonlarına nerede tıklarsak tıklayalım, değişen değerler o ürün için tüm sayfalarda görüntülenecek. Tıkladığınız reaksiyonların olduğu ayrı ürün sayfasına ve liste sayfasına bakın ve tam tersi, tüm sayfalarda belirli bir ürün için reaksiyon sayısı aynı olacak.

Bu ders, Redux'ta verilerle çalışma bölümünün sonuncusuydu. Redux store'daki verilerle daha derinlemesine çalıştık ve şimdi uygulamamıza ihtiyacımız olan işlevselliği nasıl ekleyeceğimizi ve verileri React bileşenlerinde nasıl kullanacağımızı biliyoruz.

Öğrenci uygulamanızı açın. studensSlice.js dosyasında, başlatma nesnelerine ilgili alanlarla birlikte votes özelliğini ekleyin. Bunu studentAdded reducer'ı için de yapın.

UserVotes.jsx dosyasındaki UserVotes fonksiyonunun içinde, useDispatch kancası için dispatch'i tanımlayın ve derste gösterildiği gibi, oylama butonlarına tıklandığında öğrenci id'sini ve vote adını ileterek voteClicked action'ını göndermeyi yapın.

Oylama butonlarını, StudentsList ve StudentPage bileşenlerinin görsel tasarımında gösterin.

Türkçe
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenЎзбекOʻzbekTiếng Việt
Web sitesinin çalışması, analiz ve kişiselleştirme için çerezleri kullanıyoruz. Veri işleme, Gizlilik Politikası'na uygun olarak gerçekleşir.
tümünü kabul et özelleştir reddet