2016-01-22 10 views
5

私はreact-reduxアプリケーションでredux-formで使用しているselectドロップダウンコンポーネントを作成しました。ドロップダウンは素晴らしいですが、パフォーマンスには何の影響もありませんが、ブラウザでは次の警告が表示されます。<span>は<select>の子として現れることができません

Warning: validateDOMNesting(...): <span> cannot appear as a child of <select>.

私はどの<span>要素を渡すわけではないとして、私は、このエラーを受け取る理由は私はわかりません。ここでは、私は選択ドロップダウンを作成するために使用しているコードです(optionsは各オプションの属性を含むオブジェクトの配列です)option.textはユーザーが見る文字列の値なので、 'Option 1'または「オプション2」を参照してください)。

return (
    <select {...other}> 
    <option /> { 
    options.map((option) => { 
     return <option key={option.value} value={option.value}>{option.text}</option> 
    }) 
    } </select> 
) 

この警告を受け取る理由と解決方法については、私は反応を使用しています0.14.3

+0

まあ、 'option.text'は何ですか? – Amadan

+1

google検索を受け付けました[こちら](https://github.com/glittershark/reactable/issues/177)「反応性のあるバージョン0.12.0にアップグレードし、反応/反応性のDOMについて0.14.3にアップグレードしました。エラー " –

+0

option.textは、ユーザーが表示する文字列値です。それは「オプション1」や「オプション2」のようなものになる可能性があります。 – vsank7787

答えて

5

。 私はあなたのコードをテストし、正しい字下げの後にエラーが消えました。

エラーと前:https://jsfiddle.net/snahedis/69z2wepo/28561/

そして、インデントを再後:https://jsfiddle.net/snahedis/69z2wepo/28564/

+0

ありがとうございました! – vsank7787

+0

これはうまくいきます...スペースのために作成されたスパンがわかりませんでした。 – Dhara

+0

私は 'map'関数の後に'; 'をつけたのと同じエラーがありました: '{this.state.items.map((oneItem)=> {...})};'。 ';'私の問題を修正しました。 –

0

あなたは可変的な再定義の問題があります。あなたのマップ関数のパラメータは "option"と呼ばれるので、<option>と書くと、reactは反応クラスとして変数optionによって参照されるオブジェクトを処理しようとします。代わりにこれを試してみてください - あなたのJSX構文で、いくつかの余分なスペースがspanを作成しているようだ

return (
    <select {...other}> 
    <option /> { 
    options.map((optionNode) => { 
     return <option key={optionNode.value} value={optionNode.value}>{optionNode.text}</option> 
    }) 
    } </select> 
) 
+0

私はこれが問題の原因だとは思わない、私はあなたのコードを置き換え、私は同じエラーがあります。また、ドロップダウンはレンダリングされてうまく動作します(パラメータ '' 'option''''や' 'optionNode'''を使うと、単に警告を出すだけです)。 – vsank7787

+0

反応開発ツールを使用してレンダリングされた階層をチェックしましたか? – hazardous

関連する問題