Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

172
Visualizações
La configuración del estado provoca un retraso de la interfaz de usuario en React

Tengo una aplicación de reacción que muestra una lista de tarjetas en un widget de contenedor. El widget de contenedor tiene un efecto de uso donde nos suscribimos a un observable y actualizamos la matriz que luego se usa para representar las tarjetas dentro del componente. Cada vez que alguna de las tarjetas cambia, el observable emite nuevos valores que dan como resultado la creación de la matriz nuevamente y, por lo tanto, todas las tarjetas se vuelven a representar. Sin embargo, esta nueva representación provoca un retraso notable en la interfaz de usuario.

Aquí está la versión simplificada del código del componente contenedor.

 const obsRef = useRef<Subscription>(null); const [apiResArray, setApiResArray] = useState([]); useEffect(() => { if(obsRef.current) obsRef.current.unsubscribe(); const mySubscription = myObservable$(changingValue) .subscribe((val) => { setApiResArray(val.apiArray); }); obsRef.current = mySubscription; return () => { obsRef.current && obsRef.current.unsubscribe(); }; }, [changingValue])
 return ( <CardWrapper $showMenu={showMenu}> { apiResArray.map((res, resIndex) => { return ( <Card data={{ // a json object with props }} key={res?.hKey} /> ); })} </CardWrapper> );

El componente Card aquí simplemente representa el contenido en función de los accesorios que se le pasan. Sé que dado que los datos son un Objeto, la igualdad referencial puede fallar y he intentado memorizar el componente, pero incluso eso no ayuda.

Hay mucho más en estos componentes, pero publicar todo el código no tendrá sentido. Deseo entender qué podría estar causando que la lista se vuelva a renderizar como una operación tan pesada que toda la interfaz de usuario se atasca durante uno o dos segundos. La matriz contiene alrededor de solo 100 objetos más o menos. Ocurre cada vez que changingValue ChangingValue. Puedo compartir más información según sea necesario.

Cualquier sugerencia para mejorar el rendimiento es muy apreciada.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

React montará y desmontará el componente en modo DEV para validar el limpiador de efectos y cualquier efecto secundario.

Me preocupa que suscribirse y darse de baja en su efecto.

Si desea que se defina el valor de cambio, ¿por qué no simplemente envolverlo dentro de una declaración if?

 if (changingValue) { const mySubscription = myObservable$(changingValue) .subscribe((val) => { setApiResArray(val.apiArray); }); obsRef.current = mySubscription; }

Otra observación es en el renderizado de artículos.

 <Card data={ { // a json object with props } } key={res?.hKey} // Why is this a falsy value ? />

El valor falso puede hacer que la propiedad clave cambie a aquellos que vuelven a renderizar el componente, uno con el valor de la clave interna de React y otro con su valor de implementación

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda