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

267
Views
¿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 answers
Answer question

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 Report
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!