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

164
Vistas
React Native cómo actualizar elementos en un objeto

¿Cómo actualizamos correctamente un elemento en un objeto? Estoy tratando de actualizar el elemento isComplete = true o false basic en los resultados de mi db.response

Si lo que tengo ya es correcto, ¿puede explicarme qué es lo que hace que funcione?

actualmente, estoy usando this.setState() al que estoy pasando un accesorio en mi componenteDidMount con los siguientes valores

 { "dbResponse": { "__v": 0, "_id": "6149f01736503d7aa9fb138b", "instantMessage": false, "isComplete": false }, "operationType": "todo_update" }
 // Works state = { list: [], // This list is filled from a prop on component did mount }; case 'todo_update': const {list} = this.state; //Find index of specific object using findIndex method. const objIndex = list.findIndex( obj => obj._id === data.dbResponse._id, ); //Update object's isComplete property. list[objIndex].isComplete = data.dbResponse.isComplete; break; // Does not work. It removes the last object case 'todo_update': const listStore = []; const {list} = this.state; //Find index of specific object using findIndex method. const objIndex = list.findIndex( obj => obj._id === data.dbResponse._id, ); //Update object's isComplete property. list[objIndex].isComplete = data.dbResponse.isComplete; listStore.push(list[objIndex]); setState({list: listStore}) break;
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Caso 1

 case 'todo_update': const {list} = this.state; //Find index of specific object using findIndex method. const objIndex = list.findIndex( obj => obj._id === data.dbResponse._id, ); //Update object's isComplete property. list[objIndex].isComplete = data.dbResponse.isComplete; break;

En este caso, state.list se actualiza, pero no vuelve a representar el Component . Porque list[objIndex].isComplete = data.dbResponse.isComplete; está actualizando su state sin usar setState esto se llama Data Mutation . Que no es una forma correcta de actualizar el state

Caso 2

 // Does not work. It removes the last object case 'todo_update': const listStore = []; const {list} = this.state; //Find index of specific object using findIndex method. const objIndex = list.findIndex( obj => obj._id === data.dbResponse._id, ); //Update object's isComplete property. list[objIndex].isComplete = data.dbResponse.isComplete; listStore.push(list[objIndex]); setState({list: listStore}) break;

En este listStore.push(list[objIndex]); es responsable de borrar sus datos anteriores. Dado que solo está presionando un único dato, listStore.push(list[objIndex]); .

Solución

 case 'todo_update': // This will avoid DataMutation const {list} = { ...this.state }; //Find index of specific object using findIndex method. const objIndex = list.findIndex( obj => obj._id === data.dbResponse._id, ); //Update object's isComplete property. list[objIndex].isComplete = data.dbResponse.isComplete; // This will update your state and re-render setState({ list }) break;
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