⊗jsrxPmATCDT 47 of 57 menu

Thunkin lähettäminen komponentista Reduxiin

Tällä oppitunnilla lähetämme thunkin tuotteiden hakemiseksi React-komponentista ProductsList.

Avataan nyt tuotesovelluksemme, ja siellä tiedosto ProductsList.jsx. Aluksi lisätään importaukseen thunk fetchProducts, jonka loimme:

import { selectAllProducts, fetchProducts } from './productsSlice'

Tarvitsemme myös hookin useDispatch lähettääksemme action creatorimme ja hookin useEffect, koska tässä on kyse sivuvaikutuksesta, koska käsittelemme verkkoa, ja se on ulkoinen API:

import { useEffect } from 'react' import { useSelector, useDispatch } from 'react-redux'

Nyt ensimmäiseksi riviksi funktion ProductsList koodissa ennen products:n määrittelyä lisätään:

const dispatch = useDispatch()

Seuraavaksi, kun haemme tuotteita tilasta, poimimme myös pyynnön tilan:

const products = useSelector(selectAllProducts) const productStatus = useSelector((state) => state.products.status)

Ja heti tämän jälkeen kerromme Reactille hookin useEffect avulla, että komponentin renderöinnin jälkeen meidän on haettava tuotteet. Tässä tarvitsemme pyynnön tilan, sillä on tärkeää, että tällainen pyyntö lähetetään vain kerran:

useEffect(() => { if (productStatus === 'idle') { dispatch(fetchProducts()) } }, [productStatus, dispatch])

Nyt voimme käynnistää sovelluksemme, klikata siellä vasemmalla olevasta valikosta kohtaa 'Products'. Emme vielä näe tuotelistaa, mutta jos menemme Redux DevTools:iimme, niin vasemmassa osassa ikkunaa näkyvät automaattisesti generoidut (toisin kuin sanoin edellisellä oppitunnilla) actionit products/fetchProducts/pending ja fulfilled. Nyt klikataan actionia products/fetchProducts/fulfilled ja sen kenttää payload - siinä on tuotelistamme! Hurraa, kaikki ketjumme lenkit - palvelin, tietokanta, asiakas ja Redux - sovellus toimivat yhdessä ja yhtenäisesti. Muuten, kuten näette, täällä on myös ominaisuus meta, jossa näemme pyynnön tilan.

Kiinnitetään huomiota toiseen asiaan, sinulla saattaa käydä niin, että pending ja, siten, fulfilled näkyvät kahdesti. Jos näin on, älä huoli, puhumme siitä myöhemmin.

Avaa opiskelijasovelluksesi. Avaa siellä tiedosto StudentsList.jsx. Importtaa siihen tarvittavat hookit ja thunk oppitunnin materiaalin mukaisesti.

Tutkittuasi oppitunnin materiaalin, hae pyynnön tila studentStatus, ja sitten, käyttäen useEffect:ia, lähetä fetchStudents vain sillä ehdolla, että studentStatus:n arvo on 'idle'.

Käynnistä sovelluksesi, klikkaa sovelluksen vasemmalla olevasta valikosta kohtaa 'Students', ja sitten käynnistä selaimessa Redux DevTools -laajennus, kuten tällä oppitunnilla sinun pitäisi nähdä actionit pending ja fulfilled (ja siinä payload:ssa opiskelijat). Selaa laajennuksen välilehtiä.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää