Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

151
Vistas
¿Cómo usar un gancho en un componente de reacción diferente?

Creé un enlace para alternar la visibilidad de una barra de navegación en mi página web (esto se hace en NavBar.jsx), necesito alternar la barra de navegación en otra parte de mi código, es decir, en Journey.jsx, ¿puedo pasarlos como parámetros? ¿Cómo debo abordar esto?

Aquí están los extractos esenciales/resumidos de mi código si pueden ayudar....

Aplicación.jsx:

 function App () { return ( <Router hashType="hashbang"> <div className="App"> <NavBar /> <Switch> <Route exact path="/l" component={() => <Lorem/>} /> <Route exact path="/j" component={() => <Journey/>} /> <Route exact path="/i" component={() => <Ipsum/>} /> </Switch> </div> </Router> ); }

NavBar.jsx:

 function NavBar () { //I need access to these in Journey.jsx const [sidebar, setSidebar] = useState(false); const showSidebar = () => setSidebar(!sidebar); return( //elaborations about the menu where I use these functions/varariables ); }

Viaje.jsx:

 function Journey () { return ( //some unimportant divs <button onClick={****I need access to showSidebar here****} ></button> ); }

La forma en que mi barra de navegación está configurada es que el ícono de hamburguesa que la alterna es visible y se puede usar desde cualquier lugar (incluida la página del viaje), pero quiero este botón específico solo en la página del viaje y en ningún otro lugar porque, de acuerdo con el tema del sitio web (por mi equipo de diseñadores) se supone que es una funcionalidad estética

¿Qué puedo hacer para que esto suceda? porque intenté volver a crear el enlace en App.jsx e intenté pasar cada func/var como accesorios y luego en Journey haciendo referencia a él como props.sidebar, etc. pero eso tampoco funciona...

si la solución es simplemente pasar como parámetros, ¿cómo hago exactamente eso porque lo intenté y dijo algo como que no fue declarado?

¿Alguna alternativa?

Gracias,

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

  • o eleva el estado a su ancestro común más cercano (app.js) y crea un método handleClick en App.js (hace el cambio de estado en App.js) y pasa el método con el estado actual de la barra de navegación como porps a Journey y NavBar .
  • o utiliza una verificación de contexto: https://reactjs.org/docs/context.html y https://reactjs.org/docs/hooks-reference.html#usecontext para obtener más información.
about 4 years ago · Juan Pablo Isaza Denunciar

0

La forma más fácil de compartir el estado es elevar el estado a su componente principal común y luego pasar el estado y algunos métodos que cambian el estado mediante props , como este:

 function App() { // lift state up const [sidebar, setSidebar] = useState(false); const showSidebar = () => setSidebar(!sidebar); return ( <Router hashType="hashbang"> <div className="App"> {/* pass state by props */} <NavBar sidebar={sidebar} showSidebar={showSidebar} /> <Switch> <Route exact path="/l" component={() => <Lorem />} /> {/* pass state by props */} <Route exact path="/j" component={() => <Journey sidebar={sidebar} showSidebar={showSidebar} />} /> <Route exact path="/i" component={() => <Ipsum />} /> </Switch> </div> </Router> ); } function NavBar ({sidebar,showSidebar}) { return( //elaborations about the menu where I use these functions/varariables ); } function Journey ({sidebar,showSidebar}) { return ( // use state from props <button onClick={showSidebar} ></button> ); }

También puede usar el contexto para pasar el estado profundamente.

Puede leer la última versión beta de los documentos de reacción, que describen muy detalladamente:

  • React Doc Beta: Compartir estado entre componentes
  • React Doc Beta: pasar datos profundamente con contexto

¡Espero que te sea útil!

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda