¿Cómo puedo acceder al número let mientras está fuera de la función de representación para pasar y verificar si
barra de navegación const = () => {
const getID = async (id) => { let id_lang = id; console.log(id_lang); } return ( <Nav> <NavMenu> {navname.map((el, index) => ( <NavItem key={index} > <NavLinks to="/"> { '1' === {id_lang} ? <p>{el.name_th}</p> : <p>{el.name_en}</p> //get id_lang for check if here..... } </NavLinks> </NavItem> ))} <NavItem > <NavLinksLang > <DropdownMenu className='dropdownMenu'> {language.map((el) => ( <DropdownLink onClick={ () => getID(el.id)} > {el.lang_name} </DropdownLink> ))} </DropdownMenu> </NavLinksLang> </NavItem> </NavMenu> </Nav> )}
Exportar barra de navegación predeterminada
puedes usar global, la sintaxis es
dejar ventana.id_lang = id;
esto hará que id_lang sea una variable global que le permitirá acceder a ella fuera del alcance.
recuerde que tendrá que usar window.id_lang cada vez que use la variable.
las variables tienen alcance y son accesibles según el nivel en el que se hayan declarado.
Cuando crea un componente y declara una variable en el nivel superior de un componente, todo el código siguiente puede acceder a esa variable. Sin embargo, declarar una variable en el ámbito de una función interna limita el ámbito exclusivamente a esa función.
const MyComponent = () => { var myVariable = 'hello'; function myFunction() { var myScopedVariable = 'goodbye'; console.log(myScopedVariable); console.log(myVariable); } console.log(myVariable) //this console logs 'hello' console.log(myScopedVariable) //this console logs 'undefined' because it is out of scope return <></> }Según su código, ha declarado la variable id_lang en el ámbito de una función llamada getID. Esto significa que solo getID puede acceder y cambiar esta variable.
Para acceder a esta variable fuera del alcance de esta función, debe declararla en el nivel de componente (es decir, en cualquier lugar antes de la devolución). SIN EMBARGO. Teniendo en cuenta que las variables son mutables, es más probable que desee declarar id_lang como una variable con estado. Como tal, debe escribir const [idLang, setIdLang] = useState('') y actualizar el valor de idLang usando setIdLand(id) dentro de su método getID
Gracias, funciona, pero ¿cómo actualiza el control si se selecciona el idioma?
const [idLang, setIdLang] = useState(''); const getID = async (id) => { let id_lang = id; setIdLang(id_lang) } {navtxt.map((el, index) => ( <NavItem key={index} > <NavLinks to="/" > { '1' === {idLang} ? <p>{el.name_th}</p> : <p>{el.name_en}</p> } </NavLinks> </NavItem> ))} <DropdownMenu className='dropdownMenu'> {language.map((el, index) => ( <DropdownLink onClick={ () => getID(el.id)} > {el.lang_name} </DropdownLink> ))} </DropdownMenu>