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

302
Visualizações
En React.js, ¿cómo puede verificar si existe un accesorio antes de mapearlo?

Tengo una aplicación que obtiene datos de una conexión websocket que es realmente rápida y está causando errores con los datos en el estado. Estoy. pasando una matriz de solo 15 elementos a un componente secundario, sin embargo, es una matriz de tuplas. Cuando lo mapeo, necesito deconstruir cada tupla para representar cada elemento. Sin embargo, cada 30 segundos aproximadamente, el componente recibe datos que están dañados y provocan el error:

TypeError: no se pueden leer las propiedades de undefined (leyendo '0')

En el elemento de línea [0] porque el elemento no está definido. He probado varios tipos de lógica para hacer que esta asignación sea condicional en función del contenido de la propiedad. A continuación se muestra Array.isArray (topAsks [0]), también probé topAsks.length> 2. Sin embargo, todavía está pasando e intentando mapear la matriz indefinida.

¿Hay una mejor manera de hacer esto? ¿Eso es poder verificar que no esté indefinido antes de mapear?

También comenté anteriormente que estaba pensando en hacer esto con un bucle for y luego mapear cada matriz individual (sin pasar por la necesidad de acceder a una matriz interna), parece extraño, pero tal vez esa sea una forma efectiva de hacerlo.

 import React from 'react'; function Orderbook({topAsks, topBids}) { // let askQuant = []; // let askPrice = []; // let rBids = []; // for(let i = 0; i <= 15; i++) { // for(let j = 0; j < 1; j++) { // rAsks.push(topAsks[i][j]) // } // } // console.log(topAsks) return ( <div className="ob-cont"> <div className="ob-title-cont"> <div className="ob-title-marketsize"></div> <div className="ob-title-price"></div> </div> <div className="ob-sell-cont"> {Array.isArray(topAsks[0]) ? topAsks.map((item, index) => ( <div key={index} className="ob-sell-tile"> <div className="ob-sell-tile">{item[0]} </div> <div className="ob-sell-tile">{item[1]} </div> </div> )) : <div className="ob-sell-tile"> </div> } </div> </div> ); } export default Orderbook;
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

El error al que se enfrenta se trata de leer item[0] cuando el elemento no está definido.

Una solución simple podría ser filtrar los valores reales dentro topAsks

Por ejemplo, haz algo como:

 topAsks.filter(Boolean).map((item, index) => ( <div key={index} className="ob-sell-tile"> <div className="ob-sell-tile">{item[0]} </div> <div className="ob-sell-tile">{item[1]} </div> </div> ))

De lo contrario, podría filtrar los elementos que son una matriz con al menos 2 elementos:

 topAsks.filter(a => Array.isArray(a) && a.length >= 2)

Una vez más, puede verificar con el encadenamiento opcional cuando existe el item[0] o item[1] , si no es así, puede proporcionar un caso alternativo predeterminado con el operador de fusión nulo:

 topAsks.map((item, index) => ( <div key={index} className="ob-sell-tile"> <div className="ob-sell-tile">{item?.[0] ?? 'default item[0]'} </div> <div className="ob-sell-tile">{item?.[1] ?? 'default item[1]'} </div> </div> ))
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