#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;