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

159
Visualizações
¿Cómo actualizar un objeto anidado creado por EntityAdapter redux?

Usé redux createEntityAdapter() para administrar mi estado que creé con createSlice() , el problema es que mi estado está anidado y no sé cómo actualizarlo

así es como se ve mi estado

 {ids: Array(1), entities: {…}, status: 'idle', error: null} entities: aLPii2RQz4IWitooG4lqB: burger: ingredients: Array(6) 0: {title: 'bread-tops'} 1: {title: 'cheese', Qty: 0} 2: {title: 'meatsss', Qty: 0} 3: {title: 'salad', Qty: 0} 4: {title: 'bacon', Qty: 0} 5: {title: 'bread-bottom'} length: 6 [[Prototype]]: Array(0) [[Prototype]]: Object id: "aLPii2RQz4IWitooG4lqB" [[Prototype]]: Object [[Prototype]]: Object error: null ids: ['aLPii2RQz4IWitooG4lqB'] status: "idle" [[Prototype]]: Object

por ejemplo, me gustaría aumentar mi cantidad de queso en Ingredientes

 burgerAdapter.updateOne(state, { id, changes: { burger: { ingredients: { } } }, });

No sé cómo debo recorrer los ingredientes Array para encontrar queso en la propiedad "updateOne"

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Los métodos CRUD updateOne y updateMany solo realizan fusiones superficiales. Entonces, si desea actualizar un campo anidado más profundo, tiene dos opciones:

  • Cree primero toda la matriz de ingredients nuevos
  • No use los métodos CRUD aquí: escriba la lógica de actualización como una actualización de estado "mutante" normal basada en Immer

Yo optaría por el segundo enfoque, personalmente. Ya tiene el ID del elemento y solo hay una cosa que debe actualizarse. Entonces, esto debería funcionar:

 ingredientAdded(state, action) { const {id, ingredientName} = action.payload; const item = state.entities[id]; if (item) { const ingredient = item.ingredients.find(ingredient => ingredient.title === ingredientName); if (ingredient) { ingredient.Qty += 1; } } }
about 4 years ago · Juan Pablo Isaza 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