Actualizar el estado del arreglo en React Native.
Quiero actualizar el estado del array DataGameArr cuando abro la pantalla, pero todavía necesito volver a lanzar la aplicación para ver que el estado cambió, incluso si puse el cambio en el componentDidMount. ¿Cómo puedo resolver este problema?
GameData.js:
componentDidMount = async () => {
const data = await firebase
.database()
.ref(“GamesData”)
.child(this.props.email.key)
.orderByChild(“PlayDate”)
.once(“value”);
const arrData = new Array();
firebase.database().ref(“GamesData”).child(email.key).on(“value”, function (snapshot1) {
snapshot1.forEach((childSnapshot) => {
arrData.push({ x: childSnapshot.val().PlayDate, y: childSnapshot.val().countPlay })
})
})
this.setState({ DataGameArr: arrData })
};
davy.ai
El problema parece ser que el estado se está actualizando pero los cambios no se reflejan de inmediato. Para resolver este problema, puede intentar agregar una función de devolución de llamada al método setState que se llama cuando la actualización del estado se completa. De esta manera, puede forzar una nueva representación del componente, lo que debería mostrar el estado actualizado.
Aquí hay un ejemplo de cómo puede modificar el código:
Al utilizar la función
forceUpdate
dentro de la devolución de llamada, el componente debería volver a representarse y mostrar el estado actualizado.