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

90
Visualizações
Problema al mostrar un elemento de acuerdo con la url - Reaccionar

Tengo una pregunta. Tengo un componente que al ingresar a /category/:categoryId se procesa haciendo un efecto en "api url + categoryId". Mi problema es que si cambio de una categoría a otra la página solo cambia si el useEffect se ejecuta infinitamente lo que genera problemas a la vista como se ve a continuación. ¿Cómo puedo hacer que se ejecute una vez y cuando cambio de /category/1 a /category/2 useEffect se ejecuta correctamente?

 const Categories = () => { let [producto, productos] = useState([]); const { categoryId } = useParams(); useEffect(() => { fetch('https://fakestoreapi.com/products/category/' + categoryId) .then(res=>res.json()) .then(data=>productos(data)) },[]); console.log(producto) return( <div className="container"> {producto.map((p) => ( <Producto title={p.title} price={p.price} description={p.description} image={p.image} key={p.id} id={p.id} /> ))} </div> ) } export default Categories;

Mi archivo de enrutador:

 <Route path="/category/:categoryId" component={Categories} />

Este es el problema que se genera, llega un momento en que se hace un fetch a una categoría solicitada previamente y luego se ejecuta la nueva categoría solicitada.

ver mi problema en video

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

0

Simplemente puede agregar categoryId al argumento de matriz useEffect . Se llama a la función dentro de useEffect , solo cuando cambia categoryId

 useEffect(() => { fetch('https://fakestoreapi.com/products/category/' + categoryId) .then(res=>res.json()) .then(data=>productos(data)) },[categoryId]);
about 4 years ago · Juan Pablo Isaza Relatório

0

no puede editar producto directamente, debe usar productos:

 const Categories = () => { let [producto, productos] = useState([]); const { categoryId } = useParams(); useEffect(() => { fetch('https://fakestoreapi.com/products/category/' + categoryId) .then(res=>res.json()) .then(data=>productos(data)) },[]); console.log(producto) return( <div className="container"> {producto && producto.map((p) => ( <Producto title={p.title} price={p.price} description={p.description} image={p.image} key={p.id} id={p.id} /> ))} </div> ) } export default Categories;
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