0

I use Scroll component to scroll to top whenever the route changes :

Scroll.js

import { useEffect } from 'react';
import { withRouter } from 'react-router-dom';

function ScrollToTop({ history }) {
  useEffect(() => {
    const unlisten = history.listen(() => {
      window.scrollTo(0, 0);
    });
    return () => {
      unlisten();
    }
  }, []);

  return (null);
}

export default withRouter(ScrollToTop);
<Router>
  <Fragment>
    <ScrollToTop />
    <Switch>
        <Route path="/" exact component={Home} />
    </Switch>
  </Fragment>
</Router>

The thing I want to achieve is whenever user clicks back on the browser the scroll to top should not work.

How to set scroll to top to false whenever user clicks back in browser ?

Mehdi Faraji
  • 2,574
  • 8
  • 28
  • 76

1 Answers1

1

Can't you check your history action and if it's POP, just ignore scroll?

Something like

function ScrollToTop({ history }) {
  
  useEffect(() => {
    const unlisten = history.listen(() => {
      if (history.action !== 'POP') {
          window.scrollTo(0, 0);
      }
    });
    return () => {
      unlisten();
    }
  }, []);

  return (null);
}
zhuber
  • 5,364
  • 3
  • 30
  • 63