2016-07-05 8 views
4

選択をオンにする代わりに、defaultValueまたはvalue propsを使用します。動的に生成されたオプションでSelectのdefaultValueに反応します。

<select defaultValue="react"> 
<option value="react">React</option> 
<option value="angular">Angular</option> 
</select> 

defaultValueは上記のselectタグで動作します。しかし、ループで生成されたオプションではうまく動作しないようです。

<select defaultValue={selectedOptionId}> 
{option_id.map(id => 
    <option key={id} value={id}>{options[id].name}</option> 
)} 
</select> 

defaultValueが宣言されていると、オプションが完全に設定されていない可能性がありますか?

componentDidUpdate()onChangeというイベントで手動で割り当てることができます。

しかし私の質問です - それを解決するクリーナー(良い)方法はありますか?

ありがとうございました。

答えて

0

おそらくoption_idoptionsの配列構造に問題があります。またはselectedOptionIdという変数があります。選択したコンポーネントをビルドする方法は問題ありません。私はこのコードは正常に動作しますfiddleを作った

:この問題に実行しているユーザーの場合

render: function() { 
let option_id = [0, 1]; 
let options = [{name: 'a'}, {name: 'b'}]; 
let selectedOptionId = 1 
return (
    <select defaultValue={selectedOptionId}> 
    {option_id.map(id => 
    <option key={id} value={id}>{options[id].name}</option> 
    )} 
    </select> 
) 

}

+0

回答ありがとうございます。 私の問題は、selectコンポーネントが最初に初期化されたときに、これらのオプション値が存在しなかったためです。 私のシナリオでは、最初にコンポーネントが選択された後、ユーザーが特定のリンクをクリックしたときにのみデータが取得されました。 [fiddle](https://jsfiddle.net/jhkcow8r/3/)を更新して自分のシナリオを紹介しました。 – Mingu

0

、あなたの代わりにdefaultValueの、value小道具を使って、目的の機能を得ることができます例:

<select value={selectedOptionId}> 
    {option_id.map(id => 
    <option key={id} value={id}>{options[id].name}</option> 
)} 
</select> 
関連する問題