📖

Reactでinputタグのfocusが外れてしまう

2023/03/08に公開

Reactでinputタグを入力しようとすると、入力のたびにフォーカスが外れてしまいました。

問題のコード

<ul>
 {todos.map(todo => (
   <li key={Math.ramdom()} >
    <input type="text" />
   </li>
 ))}
</ul>

原因

配列を展開しているため、配列の長さが変わるたび再レンダリングが起こりkeyの値が変わってしまっていた。

解決法

不変で固定的な数値をkeyに設定する。私はuuidを使用した。

jsの場合

npm install uuid

tsの場合

npm install --save-dev @types/uuid

Discussion