使いたい場面↓
フォーカスを当てる
const inputRef = useRef<HTMLInputElement>(null);
useEffect(() => {
inputRef.current?.focus(); // フォーカスする!
}, []);
return <input ref={inputRef} />;
?について
TSでよく使うDOM型の例
スクロールやサイズの取得
const divRef = useRef<HTMLDivElement>(null);
useEffect(() => {
console.log(divRef.current?.offsetHeight);
}, []);
タイマーや外部ライブラリとの連携
const timerRef = useRef<number | null>(null);
useEffect(() => {
timerRef.current = window.setInterval(() => {
console.log("tick");
}, 1000);
return () => {
if (timerRef.current) clearInterval(timerRef.current); // クリーンアップ
};
}, []);
状態をリレンダーさせずに保持したいとき
const countRef = useRef(0);
const handleClick = () => {
countRef.current++;
console.log("クリック数:", countRef.current);
};