🐷

[Next.js]useRefでinputにfocusする

2022/02/08に公開

useRef で focus を付ける Example

useRef を使用して input を focus する場合、以下のような感じで実装できます。

const inputRef = useRef<HTMLInputElement>(null);
const handleClick = () => {
  inputRef && inputRef.current?.focus();
};
return (
  <>
    <input ref={inputRef} />
    <button onClick={handleClick}>focus!</button>
  </>
);

TypeScript で useRef の型定義を忘れると怒られるので注意

nextjs + TypeScript で useRef を使って input の focus を操作しようとするとエラーになります。

Property 'value' does not exist on type 'never'.
useRef 使用時に「プロパティ focus は型 never に存在しません。」

解決策

TypeScript の場合はuesRef に対して型定義を付けましょう。

// mistaken 😥
const inputRef = useRef(null);
// correct 😃
const inputRef = useRef<HTMLInputElement>(null);

Discussion