React Router - How to disable the Link
In this tutorial, we are going to learn about how to disable the link in React router with the help of examples.
Consider, that we have the Link in our React app:
import React from "react";
import {Link} from 'react-router-dom';
function App {
return (
<Link to='/support' >Support us</Link>
);
}
export default App;
To disable a link in react router, add the pointerEvents: "none"
to the <Link>
component style property.
Here is an example:
import React from "react";
import {Link} from 'react-router-dom';
function App {
return (
<Link to='/support' style={{pointerEvents: "none"}} >
Support us
</Link>
);
}
export default App;
When we set a pointerEvents property to a value "none"
it disables the link and doesn’t respond to any cursor or touch events.
If you’re using the CSS class names, you can add the pointer-events: none
to the Link
component CSS class name.
import React from "react";
import {Link} from 'react-router-dom';
function App {
return (
<Link to='/support' className="disable-link" >
Support us
</Link>
);
}
export default App;
.disable-link{
pointer-events: none;
}
Disabling the link using the e.preventDefault()
We can disable the link in React router, by calling a preventDefault() method on the event
object inside the onClick
event.
The event.preventDefault()
method prevents the browser default actions, so it also disables the link.
Here is an example:
import React from "react";
import {Link} from 'react-router-dom';
function App {
return (
<div>
<Link to='/support' onClick={(e)=> e.preventDefault()} >
Support us
</Link>
</div>
);
}
export default App;
We can also disable the link conditionally when a particular condition is active.
Here is an example:
import React from "react";
import {Link} from 'react-router-dom';
function App {
const [active, setActive] = useState(false);
return (
<div>
{active
? <Link to='/support' OnClick={(e)=> e.preventDefault()} >
Support us
</Link>
: <Link to='/support'>Support us</Link>
}
</div>
);
}
export default App;
In the above example, we have used the ternary operator to render two different links, one is a disabled link and one is an active link.
{active
? <Link to='/support' OnClick={(e)=> e.preventDefault()} >
Support us
</Link>
: <Link to='/support'>Support us</Link>
}
If the active
state is true
it renders the first link otherwise, it renders the second link.