⊗jsrxPmRDARR 32 of 57 menu

Adicionando um redutor a uma aplicação Redux

Na lição anterior, criamos o componente UserReaction para que cada produto também tivesse reações dos usuários. Agora precisamos escrever um redutor que processará o contador de reações quando o usuário clicar no botão de uma reação específica.

Vamos abrir nossa aplicação de produtos e nela o arquivo productsSlice.js com todos os redutores. Agora, na propriedade reducers vamos criar outro redutor reactionClicked (podemos colocá-lo primeiro - antes de productAdded, embora isso não faça diferença). Como de costume, passaremos a ele os parâmetros state e action:

reactionClicked(state, action) {},

E agora, dentro das chaves que deixamos vazias na etapa anterior, vamos escrever o código para ele. Primeiro, vamos extrair o id do produto do payload do objeto action e o nome da reação:

const { productId, reaction } = action.payload

Em seguida, obteremos o produto necessário do estado passado:

const currentProduct = state.find(product => product.id === productId)

E se o produto existir, incrementaremos o valor da reação passada em 1:

if (currentProduct) { currentProduct.reactions[reaction]++ }

Pronto, nosso código para reactionClicked está finalizado:

reactionClicked(state, action) { const { productId, reaction } = action.payload const currentProduct = state.find(product => product.id === productId) if (currentProduct) { currentProduct.reactions[reaction]++ } },

Vamos, no final do arquivo, adicionar a exportação do action creator obtido:

export const { reactionClicked, productAdded, productUpdated } = productsSlice.actions

É importante notar dois pontos cruciais aqui. Como você se lembra das lições anteriores - atualizar diretamente o valor no código do redutor assim não é permitido (olhe para esta linha: reactions[reaction]++), mas isso é aceitável para nós porque estamos fazendo dentro do createSlice, que usa a biblioteca Immer. Ela cuidará de transformar nosso código em uma atualização "segura" do valor. Isso nos permite escrever coisas complexas de uma maneira mais simples.

Em seguida, é necessário lembrar - o objeto action deve conter a quantidade mínima possível de informações - apenas o suficiente para indicar o que aconteceu. Não faça nele quaisquer cálculos. Todos os cálculos para atualizar o estado devem ser feitos no redutor, aqui você pode escrever toda a lógica necessária para isso.

Abra sua aplicação de estudantes e no arquivo studentsSlice.js adicione mais um redutor voteClicked no campo reducers, conforme mostrado na lição. Escreva o código para ele. A tarefa do seu redutor - ao clicar, incrementar o valor vote (ou voto), no qual foi clicado, para o estudante em questão, em 1.

No final do arquivo, não se esqueça de exportar o action creator voteClicked obtido.

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