Esta pregunta mía va a ser un poco más larga.
Estoy usando react-native para desarrollar una aplicación comercial. He agregado native-base como una biblioteca de componentes.
La aplicación utiliza la fuente de datos en vivo del servidor signalr alojado en un servidor de escritorio.
Ese servidor de escritorio envía datos de mercado en vivo desde el proveedor de API y transmite esos datos a todos los clientes móviles conectados.
Ahora, el problema es que, al recibir esos datos en el móvil, la pantalla del móvil se vuelve muy lenta para la actualización de componentes y precios. Y en algún momento congela toda la aplicación y necesito reiniciarla nuevamente.
En mi aplicación móvil, tengo una pantalla de watchlist de observación que, al principio, carga los datos de nombres de acciones guardados de la base de datos en una FlatList y luego se conecta al servidor signalr para recibir datos en vivo.
Luego escucho la recepción de datos y actualizo los datos de FlatList con la actualización de estado, de modo que el precio en vivo se refleje en la lista. A veces funciona bien, pero después de un tiempo de uso, se vuelve lento y otros componentes de la GUI también se vuelven lentos.
El siguiente es el código que recibe, procesa y actualiza los datos en FlatList
proxy.on("msgreceived", (msg) => { if (typeof this.state.watchlistsymboldata != "undefined") { this.state.watchlistsymboldata.forEach((item) => { if (item.Symbolid != undefined) { if (item.Symbolid === msg.symbolid) { //console.log(msg); item.bidprice = parseFloat(msg.bidprice).toFixed(2); item.bidqty = parseInt(msg.bidquantity); item.askprice = parseFloat(msg.askprice).toFixed(2); item.askqty = parseInt(msg.askquantity); item.ltp = parseFloat(msg.ltp).toFixed(2); item.open = parseFloat(msg.open).toFixed(2); item.high = parseFloat(msg.high).toFixed(2); item.low = parseFloat(msg.low).toFixed(2); item.timetraded = msg.timestamp; item.cellcolor = msg.cellcolor; item.bidcolor = msg.bidcolor; item.askcolor = msg.askcolor; this.setState({updateState:true});//THIS IS NEEDED TO REFLECT CHANGES } } }); } });¿Cómo puedo hacer que esto funcione mejor sin una gran carga en la aplicación? Gracias.