React-router-dom не прокручивается до верхней части страницы

#reactjs #react-router-dom

#реагирует на #реагировать-маршрутизатор-дом

Вопрос:

Я схожу с ума, я использую react-router-dom, в тот момент, когда я перехожу со страницы A на страницу B, я хочу, чтобы она начиналась в верхней части страницы, везде. Я пробовал разные вещи, такие как:

 componentDidUpdate(){  console.log('hello');  document.documentElement.scrollTo(0, 0)  }  

amp;

 componentDidUpdate(){  console.log('hello');  window.scrollTo(0, 0)  }  

amp;

 import { useEffect } from 'react'; import { withRouter } from 'react-router-dom';  function ScrollToTop({ history }) {  useEffect(() =gt; {  const unlisten = history.listen(() =gt; {  window.scrollTo(0, 0);  });  return() =gt; {  unlist();  }  }, []);   return(null); }  export default withRouter(ScrollToTop);  

Но, к сожалению, безуспешно, есть ли кто-нибудь, кто может сказать мне, что я могу сделать? Я использую : react": "^16.14.0"

Таким образом, намерение состоит в том, что если я нажму на a lt;Link to={'../shopping cart'}gt;Shopping cartlt;/Linkgt; , я окажусь в верхней части страницы!

Ответ №1:

может быть, вы можете использовать крючок useRef. что-то вроде этого:

 const linkRef = useRef(null);    useEffect(() =gt; {  if (linkRef.current) {  linkRef.current.scrollIntoView({ behavior: 'smooth', block: 'start' });  }  }, []);   return lt;Link ref={linkRef} to='/shopping-card' /gt;