⊗jsrxPmATCDT 47 of 57 menu

Enviando um thunk de um componente no Redux

Nesta lição, enviaremos um thunk para buscar produtos do componente React ProductsList.

Vamos agora abrir nosso aplicativo de produtos, e nele o arquivo ProductsList.jsx. Para começar, vamos adicionar à importação o thunk fetchProducts, que criamos:

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

Também vamos precisar do hook useDispatch para despachar nosso action creator e o hook useEffect porque aqui temos um efeito colateral, uma vez que estamos lidando com a rede, o que é uma API externa:

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

Agora, na primeira linha do código da função ProductsList, antes da declaração de products, vamos adicionar:

const dispatch = useDispatch()

Em seguida, ao obter os produtos do estado, também extrairemos o status da requisição:

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

E imediatamente após isso, vamos informar ao React usando o hook useEffect, que após a renderização do componente precisamos buscar os produtos. Aqui é que precisaremos do status da requisição, pois é importante que tal requisição seja enviada apenas uma vez:

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

Agora podemos iniciar nosso aplicativo, clicar em 'Products' no menu à esquerda. Ainda não veremos a lista de produtos, mas se abrirmos nosso Redux DevTools, no lado esquerdo da janela veremos as ações geradas automaticamente (como eu disse na lição anterior) products/fetchProducts/pending e fulfilled. Agora vamos clicar na action products/fetchProducts/fulfilled e no seu campo payload - aqui está nossa listinha de produtos! Uhuu, todos os nossos elos na cadeia - servidor, banco de dados, cliente e aplicativo Redux - estão funcionando de forma coordenada e conjunta. A propósito, como você pode ver, aqui também há uma propriedade meta, onde vemos o status da requisição.

Vamos prestar atenção em mais uma coisa: pode acontecer com você que pending e, consequentemente, fulfilled sejam exibidos duas vezes. Se for esse o caso, não se preocupe, falaremos sobre isso mais tarde.

Abra seu aplicativo de estudantes. Abra nele o arquivo StudentsList.jsx. Importe para ele os hooks necessários e o thunk de acordo com o material da lição.

Após estudar os materiais da lição, obtenha o status da requisição studentStatus e, em seguida, usando useEffect, despache fetchStudents apenas sob a condição de que o valor de studentStatus seja 'idle'.

Inicie seu aplicativo, clique no menu do aplicativo à esquerda em 'Students', e então inicie a extensão Redux DevTools no navegador; assim como nesta lição, você deve ver as ações com pending e fulfilled (e neste, o payload com os estudantes). Explore as abas da extensão.

Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar