Is it possible with react router to maybe specify that Link should scroll to a component instead of rendering it? At the moment my components are rendered all at once (in a slightly long page). I have a nav bar and I would like when a user clicks on a Link in nav to scroll up/down to the appropriate component.
Asked
Active
Viewed 2,108 times
0
-
Do you really need `react-router` for this as this can simply be achieved by fragment identifier (`#`) on your anchor tag? – shriek Jan 19 '17 at 15:17
-
@shriek I've implemented **react-router** for practice and then I thought maybe there's an easy way of achieving this using it. – Manu Jan 19 '17 at 16:04
1 Answers
0
I managed to solve my problem with a little help from this post here.
He's using es6, an es5 version of it will look like this:
const hashLinkScroll = function () {
const {hash} = window.location;
if (hash !== '') {
const milliseconds = 0;
setTimeout(function () { // eslint-disable-line prefer-arrow-callback
const id = hash.replace('#', '');
const element = document.getElementById(id);
if (element) {
element.scrollIntoView();
}
}, milliseconds);
}
}
Watch out if you are using a function declaration rather than a function expression. The latter must be defined before it is called.
As for your router, you will have something like:
<Router history={browserHistory} onUpdate={hashLinkScroll}>your routes go here</Router>