Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

139
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!