⊗jsrxPmWFRAA 17 of 57 menu

Reducer e action no Redux

Na lição anterior, terminamos o formulário para adicionar um produto e o exibimos na página principal. Mas os dados adicionados ainda não são salvos, ou seja, o novo produto não é adicionado aos existentes na store. Vamos corrigir isso.

Para começar, em nosso aplicativo de produtos abriremos o arquivo productsSlice.jsx e escreveremos na propriedade reducer para createSlice a função productAdded, que será responsável por adicionar o produto na store com base no estado atual e na ação transmitidos a ela. É importante notar que aqui não nos é passado o state inteiro, mas apenas a parte que corresponde aos produtos (o slice products sabe apenas sobre ela). O objeto com o novo produto estará na propriedade payload do objeto action, que será gerado pelo manipulador de eventos ao clicar no botão de salvar no formulário. Como resultado, o reducer productAdded ficará assim no código de createSlice:

const productsSlice = createSlice({ name: 'products', initialState, reducers: { productAdded(state, action) { state.push(action.payload) }, }, })

E quanto à action? Logo no início do tutorial mencionamos que uma action é um evento, representado como um objeto, que descreve o que aconteceu no aplicativo. Também falamos sobre como podemos usar uma função action creator, que criará esse objeto para nós, por exemplo, assim:

const addProduct = newProduct => { return { type: 'products/productAdded', payload: newProduct } }

A boa notícia é que não precisamos fazer nada, pois a função createSlice fará isso por nós. Assim que escrevemos o reducer, ela criará automaticamente um action creator com o mesmo nome para nós. Só nos resta exportar o action creator obtido para uso posterior nos componentes. Vamos fazer isso no final do arquivo antes de exportar o reducer, assim:

export const { productAdded } = productsSlice.actions export default productsSlice.reducer

Abra seu aplicativo de estudantes, e então o arquivo studentsSlice.jsx, adicione o valor do campo reducer para createSlice, conforme mostrado na lição.

Adicione ao final do arquivo studentsSlice.jsx a exportação da função action creator obtida.

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