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

84
Visualizações
React Native State no se actualiza con una matriz vacía

Hola gente de stackoverflow, sé que esto se ha preguntado un millón de veces. Sin embargo, no creo haber encontrado una respuesta a mi problema.

Para resumir, estoy actualizando un estado en mi aplicación nativa de reacción solo si una declaración es verdadera. Lo que estoy experimentando es que este estado no se actualiza de alguna manera.

 const emptyArray = [] const [collapsed, setCollapsed] = useState(true); const [selectedGem, setSelectedGem] = useState(false); const [usedGem, setUsedGem] = useState(emptyArray); const [selectedPropType, setSelectedPropType] = useState('all'); const randomItem = (items) => { return items[Math.floor(Math.random()*items.length)]; } const getRandomQuestion = () => { let selectableGems = gems const maxGems = selectableGems.length; let tempGems = []; if(usedGem.length >= maxGems) { setUsedGem(emptyArray) } for (let i=0; i<maxGems; i++) { if(usedGem.length === 0 || usedGem.find(gem => gem === i) === undefined) { tempGems.push(i) } } const randomGemNumber = randomItem(tempGems) setUsedGem([...usedGem, randomGemNumber]) setSelectedGem(selectableGems[randomGemNumber]) }

Básicamente if(usedGem.length >= maxGems) { ocurre solo cuando todas las gemas se han aleatorizado una vez (hay 130 elementos en la variable de gems ). Entonces esperaría que usedGem esté vacío for el pero este no es el caso.

He probado algunas soluciones que encontré sin suerte. ¡Sé que esto tiene que ver con async pero no puedo resolverlo! ¿Alguien podría ayudarme por favor?

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

0

Aquí esto podría ayudar. La cuestión es que no puede obtener una actualización instantánea después de configurar el estado

 const getRandomQuestion = () => { let selectableGems = gems const maxGems = selectableGems.length; let tempGems = []; let gems = Array.from(usedGem); if(gems.length >= maxGems) { gems = [] } for (let i=0; i<maxGems; i++) { if(gems.length === 0 || gems.find(gem => gem === i) === undefined) { tempGems.push(i) } } const randomGemNumber = randomItem(tempGems) setUsedGem([...gems, randomGemNumber]) setSelectedGem(selectableGems[randomGemNumber]) }
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