投稿日:2022/09/11 最終更新日:2022/09/12
Reactで「Warning: Each child in a list should have a unique “key” prop.」が出た時の解決法
原因
jsxにてmap関数でループさせたときによくみられるエラーです。
例えば以下のようにprops.listsをmap関数でループさせていると想定してみましょう。
import React from 'react
const Test = (props) => {
return (
<ul>
{ props.lists.map((list) => {
<li>{ list }</li>
))}
</ul>
)
}
export default Test
この場合、コンソール上では「Warning: Each child in a list should have a unique “key” prop.」と出力されているはずです。
Reactではmap関数やforEach関数などでループ処理をさせる際に一意のkeyを与えていない場合にこのエラーが出力されます。
解決法
key={ ○○ }を直下の子要素に与える
この場合は、直下の子要素(例の場合は<li>要素)にkeyを指定してあげます。
※変更点は6~7行目
import React from 'react
const Test = (props) => {
return (
<ul>
{ Object.values(props.lists).map((list, index) => {
<li key={ index.toString() }>{ list }</li>
))}
</ul>
)
}
export default Test
map関数やforEach関数では第2引数で配列内の要素におけるインデックス番号が取得できるので、それをtoString関数で文字列に変換してあげればOKです。
これでエラーは解決されるはずです。