Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

178
Views
La pantalla de React Native se vuelve lenta después de algún uso mientras recibe datos en vivo de SignalR Server

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.

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!