LoginSignup
16
11

More than 5 years have passed since last update.

SPAのページ遷移した時の画面位置がおかしいのをなんとかしたい

Last updated at Posted at 2017-06-26

背景

ReactとReduxを使って業務効率化アプリを作っていて、タイトルの内容でもやもやした時のお話です。
機能もある程度実装して、レスポンシブ対応をして、あとはテストをすればリリースだー!

…と思いきや、スマホの画面を見てみようと実機で触ってみるとページ遷移するたびに画面が変なところにスクロールした状態でレンダリングされてしまう…

原因不明

原因を追求する為にググってみるもなんの成果もなし。(ググり方がいけないのかもしれない)

ただ、SPAって実際にページ遷移してるわけじゃないから、スクロール位置がそのまま維持されてるんじゃないか説は割と濃厚そうな予感はしてる。

なんとかしたい(した)

Reactを使っているので、react-routerでルーティングを行なっています。
react-routerにはonEnterというページ遷移時のミドルウェアを挟むための便利な属性があるみたいで、これを用いてなんとかしました。

app.jsx
// 省略

<Provider store={ store }>
  <Router history={ history }>
    <Route path="/" component={ App }>
      <Route path="/hoge" component={ hoge } onEnter={ checkEnter } /> // ページ遷移した時に呼び出される
    </Route>
  </Router>
</Provider>

function checkEnter() {
  window.scroll(0, 0); // ページの一番上に移動
}

これで解決✨
ただ原因はちゃんと掴めていないし、その場しのぎ感が否めないので、もしこうなってしまう原因をご存知の方がいらしたらご教授いただけたらと思います…

それにしてもこのonEnterとても便利だ。
色々なことに使えそう。

16
11
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
11