57

I'm building a React app that has links pointing to predefined routes.

<a href="/my/react/route/">Click Here</a>

The routes resolve fine, but it's refreshing the page, thereby slowing down app performance. How do I avoid re-rendering the entire page?

Rick
  • 8,366
  • 8
  • 47
  • 76
  • 2
    `Link` eventually calls `history.pushState` which is what sets the URL without causing the page to refresh. https://developer.mozilla.org/en-US/docs/Web/API/History/pushState – azium Nov 27 '15 at 22:01

5 Answers5

83

Fix the problem by using the <Link> tag included with react-router.

import React from "react";
import { Link } from 'react-router-dom';

export class ToolTip extends React.Component {
  render() {
    return (
      <Link to="/My/Route">Click Here</Link>
    )
  }
};
JGallardo
  • 11,074
  • 10
  • 82
  • 96
Rick
  • 8,366
  • 8
  • 47
  • 76
5

You need to:

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

then import the component you wish to go to

import Example from "./component/Example"

Then use Link like this

<Link to="/Example">
   <h4>Example Page</h4>
</Link>

This will stop the refreshing.

Note that, if to="/Example" matches a route you've specified in your BrowserRouter and then it sends you there.

Learn more here Reat Training / React Router

Ajeet Shah
  • 18,551
  • 8
  • 57
  • 87
Edwin
  • 71
  • 1
  • 4
4

First answer was correct but I didn't found Link from react-router-dom. It was in my case here:

import { Link } from 'react-router';
Janne Harju
  • 976
  • 1
  • 14
  • 29
  • 9
    Different versions of react-router: `version 4: import { Link } from react-router-dom` `version 3 or before: import { Link } from react-router` – Nicolas Sep 06 '17 at 22:58
  • it is not available in earlier version but with version 4 and above you can do this `import { Link } from 'react-router-dom'` – M.suleman Khan Mar 25 '19 at 18:55
1

Hi semantic ui react example

             <Menu.Item name="NotFound" as={NavLink} to="/dadsadsa" />
tayfun Kılıç
  • 2,042
  • 1
  • 14
  • 11
  • 1
    This is the correct answer if using React-Bootstrap [Nav.Link](https://react-bootstrap-v4.netlify.app/components/navs/#nav-link-props). Import `NavLink` from react-router-dom. Change `href` to `to` and add the `as` property: `Account` – mcarson Oct 20 '21 at 19:58
  • Hi @mcarson your answer is correct thank you – tayfun Kılıç Oct 20 '21 at 20:20
0

In case the above methods don't work, check if you are importing the right component where you are defining the routes. (In my case, I imported a component with the same name but from a wrong path)

Robin J
  • 11
  • 3