📜
【React/Next.js】任意の要素まで自動スクロールする方法
きっかけ
アプリを作成する中で、フロント側で入力した値を用いてデータ取得を実行し、取得したデータを画面に表示していました。スマホで使うことを想定していたため、表示エリアがスマホの画面の下の方で見切れてしまっており、どうにかできないかと思っていました。
そこで、データを取得した後にそのエリアまで自動スクロールさせればUX的にもより良くなると思い、やり方をまとめてみました。
結論
-
useRef宣言 - スクロールさせたい要素のref属性に1を渡す
- イベントハンドラやuseEffect内でスクロール処理の実行
サンプルコード例
"use client";
import { useRef } from "react";
export default function examplePage() {
const cardRef = useRef<HTMLDivElement>(null); // 1
const onClickScroll = () => {
cardRef.current?.scrollIntoView({ // 3
behavior: "smooth",
block: "center",
});
};
return (
<div>
<button onClick={onClickScroll}>
スクロールさせる
</button>
<div ref={cardRef}> // 2
// 表示したい内容
</div>
</div>
);
}
- サンプルコードのみだと画面内に収まるので、動作確認等は高さを作ってからやってみてください。
- 詳細は公式ドキュメントを参照していただければと!
Discussion