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

169
Vistas
Reaccionar: hacer clic en un enlace de enrutador antes de que el enlace obtenga un valor

el problema es que el cambio de URL ocurre antes de que el enlace obtenga un valor. Recibo el estado directamente a través del componente, pero antes de que eso suceda, ya se hizo clic en el componente. el valor se asigna después del cambio de URL, por lo que devuelve indefinido. ¿Cómo arreglaría esto?

 import React, {useEffect, useState} from "react"; import "./Main.scss"; import CategoryWindow from "./CategoryWindow" import RecipeSelection from "./RecipeSelection"; import RecipeWindow from "./RecipeWindow"; import {BrowserRouter as Router, Switch, Route, Link} from "react-router-dom"; const Main =()=> { const [showElement, setShowElement] = useState("category"); const [selectedCategory, setSelectedCategory] = useState(); useEffect(()=> { if (selectedCategory) { setShowElement("recipeSelection") } }); return ( <> <main className="main"> <Router> <div> <div> {showElement === "category" ? <Link to={`/${selectedCategory}`}> <CategoryWindow passSelectedCategory={setSelectedCategory} /> </Link> : ''} </div> </div> </Router> </main> </> ) } export default Main;
about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

intente cambiar useEffect a esto para que no se vuelva a procesar cada milisegundo y ¿puede mostrar cómo se ve CategoryWindow?

 useEffect(()=> { if (selectedCategory) { setShowElement("recipeSelection") } }, [selectedCategory]);

No creo que un enlace deba colocarse directamente en un enrutador, pero si desea obtener la categoría del enlace en el componente CategoryWindow, puede obtenerla directamente del enlace sin pasar el estado seleccionado Categoría

Principal.js

 <> <Router> <Route path="item"> <Route path=":category" element={<CategoryWindow />}/>} </Route> <Route path="/" element={<Component />}/>} </Router> </>

CategoryWindow.js

 import { useParams} from 'react-router-dom'; const { category} = useParams() <> <div>{category}</div> // this is the actual selectedCategory </>

Componente.js

 const [selectedCategory, setSelectedCategory] = useState(); <> <Link to={"/category/" + selectedCategory}/> </>
about 4 years ago · Santiago Trujillo Denunciar

0

pase [selectedCategory] como segundo argumento en useEffect.

 useEffect(()=> { if (selectedCategory) { setShowElement("recipeSelection") } },[selectedCategory]);

mira esto: Usando el Gancho de Efecto

about 4 years ago · Santiago Trujillo 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