Estoy tratando de actualizar un valor de objeto único (booleano) en mi matriz usando setState. Basado en discusiones anteriores, mi enfoque no muta el estado anterior, crea una copia de la matriz original, actualiza la copia y luego actualiza la matriz original. El 'problema' con el que me he encontrado es que mientras el estado actualiza mi lista virtual, la matriz no se vuelve a renderizar (FlatList en RN, específicamente).
Discusiones anteriores a las que se hace referencia: Reaccionar: ¿cómo actualizar state.item[1] en el estado usando setState?
Como solución alternativa, hago una copia de mi matriz original y luego configuro la matriz original para que esté vacía. El costo es un 'parpadeo' muy breve cada vez que se vuelve a renderizar la matriz.
Pregunta: ¿Existe una mejor manera de actualizar el valor de un objeto en mi matriz Y desencadenar una nueva representación de la matriz en otra parte de mi aplicación?
Solución actual:
originalArray = [{ id: '123', randomKey: true }, {'234', randomKey: false }, ...] const index = originalArray.findIndex(item => item.id === currentItemId) if (index > -1) { const newArray = [...originalArray] setOriginalArray([]) // My solution to re-render the array let updatedItem = {...newArray[index]} updatedItem.randomKey = !randomKey // the value is a boolean newArray[index] = updatedItem setOriginalArray(newArray) }¡Salud!