Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.3K
Views
Cómo usar enlaces de anclaje normales con react-router

Muy similar a esta pregunta angular : ¿cómo uso los enlaces de anclaje para la navegación en la página cuando uso el enrutador de reacción?

En otras palabras, ¿cómo implemento el siguiente HTML simple cuando uso el enrutador de reacción?

 <a href="#faq-1">Question 1</a> <a href="#faq-2">Question 2</a> <a href="#faq-3">Question 3</a> <h3 id="faq-1">Question 1</h3> <h3 id="faq-2">Question 2</h3> <h3 id="fa1-3">Question 3</h3>

Actualmente intercepto clics en dichos enlaces y me desplazo a la posición de anclaje. Esto no es satisfactorio, porque significa que es imposible vincular directamente a alguna sección de una página.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

El problema con los enlaces de anclaje es que el valor predeterminado de react-router es usar el hash en la URL para mantener el estado. Afortunadamente, puede cambiar el comportamiento predeterminado por otra cosa, según la documentación de ubicación . En su caso, probablemente quiera probar "URL limpias" usando el objeto HistoryLocation, lo que significa que el enrutador de reacción no usará el hash de URL. Pruébalo así:

 Router.run(routes, Router.HistoryLocation, function (Handler) { React.render(<Handler/>, document.body); });
over 4 years ago · Santiago Trujillo Report

0

React Router Hash Link funcionó para mí. Fácil de instalar e implementar:

 $ npm install --save react-router-hash-link

En su componente.js, impórtelo como enlace:

 import { HashLink as Link } from 'react-router-hash-link';

Y en lugar de usar un ancla <a> , usa <Link> :

 <Link to="#faq-1>Question 1</Link> <Link to="#faq-2>Question 2</Link> <Link to="#faq-3>Question 3</Link>

NOTA: HashRouter en lugar de Router

over 4 years ago · Santiago Trujillo Report

0

import { Link } from 'react-router-dom'

enlace usando

<Link to='/homepage#faq-1'>Question 1</Link>

Luego inserte el siguiente código dentro de su componente React de destino (página de inicio):

 useEffect(() => { const hash = props.history.location.hash // Check if there is a hash and if an element with that id exists const el = hash && document.getElementById(hash.substr(1)) if (el) { el.scrollIntoView({behavior: "smooth"}) } }, [props.history.location.hash]) // Fires every time hash changes
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!