Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

138
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda