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

118
Visualizações
Cómo cambiar el valor de un objeto anidado de un estado redux

tengo el siguiente estado

 const state = { courses: [], series: [], course: { title: 'testing', course_notes: [ { id: 1, note: "one" // want to edit this }, { id: 2, note: "two" } ] } }

Quiero cambiar state.course.course_notesp[0].name

Nunca entendí completamente cómo funciona esto, leí muchos tutoriales, siento que sé cómo funciona, pero siempre me hace tropezar. esto es lo que estoy intentando

 const m = { ...state, course: { course_notes:[ ...state.course.course_notes, state.course.course_notes.find(n => n.id === 1).note = "edited" ] } }

Eso parece agregar edited como un nodo adicional. state.course.course_notes.length termina siendo 3 .

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

0

Hay muchas maneras de modificar el estado de su tienda para actualizar un elemento de las notas del curso.

Si supusiéramos que los id son únicos, mapearía la matriz anterior modificando el elemento con id 1.

 .... course_notes: state.course.course_notes.map(x => x === 1 ? { ...x, note: 'edited' } : x ) ...
about 4 years ago · Juan Pablo Isaza Relatório

0

Está utilizando el operador de dispersión para matrices como lo haría con objetos.

Suponga que tiene un objeto

 const obj = { a: 1, b: 2 }

Si usted dice:

 {...obj, a: 2}

Lo que estás diciendo es:

 { a: 1, b: 2, a: 2 }

La propiedad a se define dos veces, pero la segunda anula a la primera.

Sin embargo, si hace algo similar para una matriz, el resultado sería diferente:

 const arr = [1, 2]; const newArr = [...arr, arr[0]]; // here the result would be [1, 2, 1]

Por eso cuando dices:

 course_notes:[ ...state.course.course_notes, state.course.course_notes.find(n => n.id === 1).note = "edited" ]

lo que hace es agregar un elemento extra a la matriz.

En su lugar, lo que debe hacer es crear una versión modificada de la matriz, por ejemplo, usando map

 course_notes: state.course.course_notes.map(el => { if (el.id === 1) { el.note = 'edited'; } return el; });
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