Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

140
Visualizações
Reductor agrega elemento y actualiza elemento en una matriz de objetos sin mutación

Hola, reductor creado y me pregunto si este es el patrón correcto.

Estoy tratando de:

  1. Agregue un nuevo elemento a la matriz de objetos ACTION_TYPE
  2. Actualice el elemento en la matriz de objetos ACTION_TYPE_EDIT , este en realidad debería establecer un accesorio de caridad y actualizar el elemento en la matriz de organizaciones benéficas

Me pregunto si estoy en el camino correcto, no quiero mutar, así que aquí está mi código.

 export const reducerCharities = ( state: CharityReducerState, action: CharitiesAction | CharityEditAction ) => { switch (action.type) { case ACTION_TYPE_EDIT: return { ...state, charity: { ...state.charity, ...(action.charity || {}), }, charities: [ ...state.charities.map(item => item.id === action.charity?.id ? { ...item, ...action.charity } : item) ] } case ACTION_TYPE: return { ...state, charities: [ ...state.charities || [], ...action.charities ] } default: return state } }

Entonces, mi pregunta es si esta parte mutará o ¿hay una mejor manera de escribir esto?

 charities: [ ...state.charities.map(item => item.id === action.charity?.id ? { ...item, ...action.charity } : item) ]

¿Es este el enfoque correcto para agregar un nuevo elemento a la matriz?

 { ...state, charities: [ ...state.charities || [], ...action.charities ] }
about 4 years ago · Santiago Gelvez
1 Respostas
Responde à pergunta

0

La forma más fácil (y recomendada oficialmente desde 2019) de hacer esto sería usar el paquete oficial Redux Toolkit y el método createSlice .

Dentro de eso, puede simplemente mutar y no tiene que preocuparse por las actualizaciones inmutables manuales: el paquete se hace cargo por usted.

El código podría verse como

 const charitiesSlice = ({ name: 'charities', initialStae: myInitialState, reducers: { edit(state, action: PayloadAction<Charity>){ const charity = state.charities.find(item => item.id === action.payload.id) if (charity) { Object.assign(charity, action.payload) } state.charity = action.payload } } } export const { edit } = charitiesSlice.actions export const reducerCharities = charitiesSlice.reducer
about 4 years ago · Santiago Gelvez Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda