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

298
Visualizações
Cree dinámicamente páginas basadas en slug de API en ReactJS

He estado aprendiendo acerca de React Router y me he encontrado con algunos problemas mientras intentaba implementar una creación de página dinámica basada en los slugs que recibo de mi llamada de búsqueda de API.

Básicamente, estoy tratando de redirigir al usuario a una nueva página después de hacer clic en un enlace: esta nueva página será un componente nuevo y haré una nueva llamada api en este componente con el slug como mi parámetro de búsqueda.

Sin embargo, estoy luchando para cambiar dinámicamente las páginas en función de las babosas.

Aquí está el componente (BoxScore.js) en el que realizo la búsqueda inicial y los datos de visualización:

 import React from "react"; import { useEffect, useState } from "react"; import { Link } from "react-router-dom"; const BoxScore = () => { const [users, setUsers] = useState([]); const [pageNumber, setPageNumber] = useState(1); useEffect(() => { fetch( `myfetchapihere.com` ) .then((response) => { return response.json(); }) .then((data) => { setUsers(data); console.log(data); setPageNumber(pageNumber); }); }, [pageNumber]); return ( <> {users.map((user) => ( <div className="column" key={user.id} id={user.id}> <div className="inner"> <div className="flex"> <h2 className="uk-text-small"> <Link to={user.slug} className="h2 link" id={user.slug}> {user.name} </Link> </div> </div></div> )} </>);

En mi App.js, he configurado el enrutador de reacción:

 <Routes> <Route path="boxscore/:slug" element={<BoxScore />}> <Route path=":slug" element={<OneScore />} /> </Route> </Routes>

Mi componente OneScore que no se procesa al hacer clic en el enlace que configuré en el componente Boxscore:

 import React from 'react' import BoxScore from './Boxscore' import { useParams } from "react-router"; import {useEffect} from 'react' function OneScore() { const { slug } = useParams(); useEffect(() => { // Fetch post using the postSlug console.log({slug}); }, [slug]); return ( <div> Hiii </div> ) } export default OneScore

EDITAR: he logrado que el enlace funcione gracias a los comentarios de @DrewReese; sin embargo, el único problema que queda ahora es que después de cambiar la URL a (por ejemplo, www.a.com/boxscore/ ), el componente 'OneScore' no se muestra en cambio, el mismo BoxScore permanece solo se cambia la URL.

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

0

En lugar de una etiqueta de anclaje sin procesar ( <a /> ), use el componente Link o NavLink . Estos componentes de enlace funcionan con el contexto de enrutamiento proporcionado por el enrutador. El uso de la etiqueta de anclaje volverá a cargar la aplicación, lo que muy probablemente no es lo que desea que ocurra.

 import { Link } from 'react-router-dom'; ... {users.map((user) => ( <div className="column" key={user.id} id={user.id} > <div className="inner"> <div className="flex"> <Link to={user.slug} className="h2link" id={user.slug}> <h2 className="uk-text-small">{user.name}</h2> </Link> </div> </div> </div> )};

El componente enrutado debe usar el gancho useParams para acceder al parámetro de ruta de slug de la ruta y un gancho useEffect para volver a ejecutar cualquier lógica que dependa de este valor de slug.

 import { useEffect } from 'react'; import { useParams } from 'react-router-dom'; ... const { slug } = useParams(); useEffect(() => { // "make a new api call on this component with the slug as my search parameter" }, [slug]);
about 4 years ago · Juan Pablo Isaza Relatório

0

Busque useParams para obtener el slug de la URL. https://v5.reactrouter.com/web/api/Hooks/useparams

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