作 ▸
Reactで画面遷移時にスクロール位置を先頭に戻す (Redux, Connected React Router使用)
React Routerの公式に載ってるやつを、ReduxとConnected React Router使ってるアプリでやっただけ。
react 16.13.0react-router-dom 5.1.2connected-react-router 6.8.0
React Router公式のサンプル通り、以下のコンポーネントを作ります。
このコンポーネントを、index.jsx
で ReactDOM.render()
してるところに以下のように設置します。
これで、リンクをクリックまたは history.push()
して画面遷移した時に、スクロール位置が先頭に戻るようになります。
この方法の場合、ブラウザで戻る/進むを行った時は、スクロール位置は維持されます。
画面全体が更新されるたびに <ScrollToTop />
が一緒に更新されるから、こういうことができるんだと思います。
なお、公式のページで最初に書かれてる以下のものは、ブラウザで戻る/進むを行った時もスクロール位置が先頭に戻ります。
Reactのバージョンが16.8以上の場合はこれを使えるとのことですが、挙動が違うのでは良し悪しな気がします。