Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jsrxPmATDT 54 of 57 menu
◀ ▶

Enviando dados usando thunk no Redux

Na lição anterior, exploramos como processar uma requisição POST no nosso servidor simulado. Vamos agora escrever uma função thunk que irá enviar a requisição para o servidor.

Vamos abrir nosso aplicativo de produtos, e no seu arquivo productsSlice.js. Agora, após o thunk fetchProducts, vamos usar createAsyncThunk para criar o thunk addProduct:

export const addProduct = createAsyncThunk()

Como primeiro parâmetro para createAsyncThunk, passaremos 'products/addProduct', e como segundo, um callback assíncrono, que receberá um objeto com os dados do novo produto:

export const addProduct = createAsyncThunk( 'products/addProduct', async (newProduct) => {} )

No código deste callback, vamos chamar o cliente, passando como parâmetros o caminho e o objeto com o produto, e então retornaremos os dados da resposta:

export const addProduct = createAsyncThunk( 'products/addProduct', async (newProduct) => { const response = await client.post('/fakeServer/products', newProduct) return response.data } )

Agora, abaixo no código, vamos olhar para o campo reducers do productsSlice. Antes, nós adicionávamos um novo produto usando o redutor productAdded, no qual tínhamos os métodos reducer e prepare. Agora estamos gerando os dados necessários no servidor e trabalhando com thunk, então vamos remover completamente o redutor productAdded daqui. E então adicionaremos no método extraReducers (no final do seu código) mais um redutor adicional, que, no caso de uma requisição bem-sucedida, adicionará ao slice products o novo produto diretamente do payload da action (lembre-se, esse código é possível graças ao incomparável createSlice):

.addCase(addProduct.fulfilled, (state, action) => { state.products.push(action.payload) })

Ah, e não se esqueça de remover o nanoid das linhas de importação, e o productAdded da exportação das actions no final do arquivo.

Abra seu aplicativo de estudantes. Abra nele o arquivo studentsSlice.js. Usando o createAsyncThunk, crie outro thunk addStudent, que enviará uma requisição POST para o servidor para adicionar um novo estudante, como mostrado na lição.

Em seguida, mais abaixo, faça as alterações para o studentsSlice: remova completamente o redutor studentAdded na propriedade reducers. E no campo extraReducers adicione um redutor adicional, que adicionará um novo estudante ao slice students a partir do payload da action no caso de uma requisição bem-sucedida, como mostrado na liçã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