SCALE — Build Lab

スクロール位置の復元

推奨 状態保持

一覧 → 詳細 → 戻るで、元のスクロール位置に戻る。

なぜ必要?

長い一覧の途中で詳細を見て戻った時、最上部に飛ぶと探し直しになる。

どう実装する?

sessionStorage に scroll Y を保存。戻った時に復元。

コード例
ts
// 一覧ページ
useEffect(() => {
  const saved = sessionStorage.getItem('scroll:' + location.pathname);
  if (saved) window.scrollTo(0, parseInt(saved, 10));
  return () => {
    sessionStorage.setItem('scroll:' + location.pathname, String(window.scrollY));
  };
}, []);

スクロール位置の復元

:LiTarget: 何のために?

長い一覧の途中で詳細を見て戻った時、最上部に飛ぶと探し直しになる。

:LiSparkle: どう実装する?

sessionStorage に scroll Y を保存。戻った時に復元。

:LiCode: コード例

// 一覧ページ
useEffect(() => {
  const saved = sessionStorage.getItem('scroll:' + location.pathname);
  if (saved) window.scrollTo(0, parseInt(saved, 10));
  return () => {
    sessionStorage.setItem('scroll:' + location.pathname, String(window.scrollY));
  };
}, []);