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

89
Vistas
Cómo actualizar una matriz en un objeto en Javascript

Estoy construyendo un proyecto de reacción y tengo un estado inicial.

 const WalletContext = React.createContext({ hasExpenses: false, wallets: {}, expenses: [], createWallet: () => {}, addExpense: (data) => {}, });

Estoy tratando de agregar un gasto a las wallets . Un gasto será un objeto en sí mismo y al agregar el gasto, uso la id de la billetera para saber a qué billetera agregarlo.

Hay que actualizar otro código, pero lo que quiero es agregar un gasto a mi billetera y actualizar mi estado. Traté de concatenar ese gasto que tengo en mi action.payload . Esta es una declaración if dentro de mi reductor.

 if (action.type === 'ADD') { const updatedHasExpenses = state.expenses.length > 0; state.wallets[action.payload.walletId].concat(action.payload); return { ...state, hasExpenses: updatedHasExpenses, }; }

El problema es que cuando trato de obtener estos datos en uno de mis otros componentes, tengo todas mis identificaciones de billetera, pero cada billetera tiene una matriz vacía asociada y no debería ser el caso una vez que agrego a mi billetera con una identificación de billetera un gasto .

Estoy obteniendo la identificación de la billetera. Esto ya lo verifiqué y le estoy proporcionando a mi componente los datos que tengo de mi contexto. Creo que el problema proviene de mi reductor.

Mi billetera es la siguiente...

 { 'someId': [{'title': 'sometitle', 'category': 'somecategory' }] }

Mi payload es el siguiente...

 { id: Math.random().toString(), walletId, date, title, category, amount, }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Pruebe Object.assign en lugar de concat y agregue billeteras a su declaración de devolución:

 if (action.type === 'ADD') { const updatedHasExpenses = state.expenses.length > 0; const wallets = Object.assign(state.wallets[action.payload.walletId], action.payload) return { ...state, hasExpenses: updatedHasExpenses, walets: Object.assign(state.wallets, wallets) };

}

about 4 years ago · Juan Pablo Isaza 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