React.jsコンポーネントがあり、HTMLオプションを追加するためにインポートするオブジェクトをループしたいと思います。ここでは醜いの両方で、動作しない、私が試したものです:React.jsを使用してJSXでオブジェクトをループする方法
import React from 'react';
import AccountTypes from '../data/AccountType';
const AccountTypeSelect = (props) => {
return (
<select id={props.id} className = {props.classString} style={props.styleObject}>
<option value="nothingSelected" defaultValue>--Select--</option>
{
$.each(AccountTypes, function(index) {
<option val={this.id}>this.name</option>
})
}
</select>
);
};
export default AccountTypeSelect;
私は上記のコードからコンソールにこのエラーを受け取っ:
invariant.js 4599:38 - キャッチされない不変違反?:オブジェクトはReactの子としては無効です(found:キー{id、name、enabled、additionalInfo}のオブジェクト)。子コレクションをレンダリングする場合は、代わりに配列を使用するか、ReactアドオンのcreateFragment(オブジェクト)を使用してオブジェクトをラップします。レンダリング方法がAccountTypeSelect
であることを確認します。
実際には、各オブジェクトを配列に変換するか、createFragmentでラップして使用する必要がありますか?この場合のベストプラクティスは何ですか?
キー属性とは何ですか - なぜ私はそれを使用する必要がありますか?私がやりたいことが単純なオプションタグの中に置かれているときには、一見恣意的な属性を追加する必要があるのは間違いです。 – Tylerlee12
ここでは、「調整」のキー属性について説明します。https://facebook.github.io/react/docs/multiple-components.htmlしかし、基本的には、子要素が動的に生成されたときに、反応が正しくDOMを更新するようにすることです(弱い説明、私は知っていますが、コメント内の反応文書を繰り返す必要はありません)。その点で私のループ変数の使用は貧弱な形だったので、私は答えを更新しました。ごめんなさい! – Kevin