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

274
Visualizações
¿Por qué no puedo mostrar una variable let después de cambiarla en una función?

Actualmente estoy tratando de asignar diferentes objetos a una variable let usando declaraciones if antes de mostrarla. Por alguna razón, asignar el objeto en una función dará como resultado que la variable no muestre nada en lugar de mostrar el objeto asignado.

Déjame dar un ejemplo:

En el siguiente código, estoy asignando 2 íconos diferentes a una variable let dependiendo de un accesorio que pasé de otro archivo y el resultado coincide exactamente con lo que estoy buscando.

 const BottomBar = ({ screen }) => { let icon; if (screen === 'Home') { icon = (<Entypo name='home' size={30} color='white'/>); } else { icon = (<SimpleLineIcons name='home' size={24} color='white'/>); } return ( <View>{icon}</View> ); }

Sin embargo, si volviera a intentar este mismo ejemplo con una combinación de una función con el gancho useEffect, el objeto {icon} no muestra nada.

 const BottomBar = ({ screen }) => { let icon; const checkScreen = () => { if (screen === 'Home') { icon = (<Entypo name='home' size={30} color='white'/>); } else { icon = (<SimpleLineIcons name='home' size={24} color='white'/>); } }; useEffect(() => { checkScreen(); }); return ( <View>{icon}</View> ); }

De inmediato, puedo asumir que esto se debe a que la función es asíncrona. El "icono" de la variable let se utiliza antes de asignarle un objeto. Entonces, una solución simple sería algo como lo siguiente:

 const BottomBar = ({ screen }) => { const checkScreen = () => { if (screen === 'Home') { return (<Entypo name='home' size={30} color='white'/>); } else { return (<SimpleLineIcons name='home' size={24} color='white'/>); } }; let icon = checkScreen(); return ( <View>{icon}</View> ); }

Pero, ¿qué pasa si quiero reasignar el ícono de la variable con un objeto diferente más adelante después de presionar un botón? Simplemente asignar un objeto de inmediato no me permite reasignarlo más tarde. Lo que me gustaría hacer es asignar el objeto según sea necesario. ¿Qué me estoy perdiendo? ¿Estoy pasando mal la variable o simplemente no es posible?

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

0

La variable let no hace que la página se vuelva a representar después de la asignación, por lo que el valor se cambia pero el componente de reacción no lo lee, use el gancho useState en su lugar para propósitos como este, pero le aconsejo que use la representación condicional para su caso como este:

 const BottomBar = ({ screen }) => { const checkScreen = () => { if (screen === 'Home') { return (<Entypo name='home' size={30} color='white' />); } else { return (<SimpleLineIcons name='home' size={24} color='white' />); } }; return ( <View>{checkScreen()}</View> ); }
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