質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

3804閲覧

ReactにてWarning: Each child in a list should have a unique "key" prop.のエラー

fresh_fish

総合スコア20

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2020/11/10 08:32

発生している問題・エラーメッセージ

Reactにて動的にフォームを追加する機能を作成しているのですがkeyのエラーが消えず困っております
mapで繰り返す要素の外側のタグに追加するという認識だったのですがどうやら違うみたいです
改善点を教えて頂けると助かります

エラーメッセージ Warning: Each child in a list should have a unique "key" prop.

該当のソースコード

let count = 0 class BandCreate extends React.Component { constructor(props) { super(props); this.state = { forms: [0] }; this.handleAddForm = this.handleAddForm.bind(this) } handleAddForm(e) { e.preventDefault() count++ let forms = this.state.forms forms.push(count) console.log(forms) this.setState({ forms: forms }) } render() { return ( <> {this.state.forms.map((form) => <span key={form.toString()}>  ここではないのでしょうか <div className="nested-fields"> <label>メンバー名</label> <select name={`band[relationships_attributes][${form}][user_id]`}> {this.props.collections.map(collection => <option value={collection[1]}>{collection[0]}</option>)} </select> <label>パート</label> <select name={`band[relationships_attributes][${form}][part]`}> <option value="Vo1">Vo1</option> <option value="Vo2">Vo2</option> <option value="GtVo">GtVo</option> <option value="BaVo">BaVo</option> <option value="Gt1">Gt1</option> <option value="Gt2">Gt2</option> <option value="Ba">Ba</option> <option value="Dr">Dr</option> <option value="Key">Key</option> <option value="その他">その他</option> </select> <input value="false" type="hidden" name={`band[relationships_attributes][${form}][_destroy]`} /> </div> </span> )} <button type="button" onClick={this.handleAddForm}>メンバーを追加</button> </> ); } }

補足情報(FW/ツールのバージョンなど)

├─ react-dom@17.0.1
├─ react-is@16.13.1
├─ react@17.0.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

this.props.collections.mapで生成される<option>keyが付いていませんが、そちらの問題ではないでしょうか。

投稿2020/11/10 08:43

maisumakun

総合スコア146544

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fresh_fish

2020/11/10 08:49

非常に初歩的なミスでした、、、 こんな質問に答えて頂きありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問