2016-09-06 28 views
1

「item」はゼロから始まるインクリメント値で、入力に対してrefsという名前の動的な行を探しています。ReactJS動的に指定されたrefsをループする方法

"入力タイプ=" テキスト "REF = { 'name' の+アイテム}はdefaultValue = {アイテム} />"

どの値を掻き出すために、これらの動的な参考文献を介してIループでしょうか?私は運がないとこれを試みた。それは私にオブジェクトが未定義であると伝えます。 (入力の長さは、添加元素の数に等しいであろう)

var arr = this.state.inputs; 
var arrayLength = arr.length; 
for (var i = 0; i < arrayLength; i++) { 
    var c = this.refs.name + i.value 
    alert(c); 
} 

もののは、これが作業を行い、その動的なので、私はハードコードも、それを介してループする必要はない。

alert(this.refs.name0.value); 
alert(this.refs.name1.value); 
alert(this.refs.name2.value); 
+1

'Object.keys' ..... – zerkms

答えて

6

私はあなたがDOMは(少なくとも私の経験されたこと)だけでなく、レフリーの入力のためにオブジェクトを取得する必要があると考えている:

import ReactDOM from 'react-dom'; 

const values = {}; 
Object.keys(this.refs) 
    .filter(key => key.substr(0,4) === 'name') 
    .forEach(key => { 
     values[key] = ReactDOM.findDOMNode(this.refs[key])).value || null; 
    }); 

幸運を!

+0

ありがとうございました!それは何らかの理由でループの最初の反復でヌルの値を取得します。 if文でフィルタリングするだけです。それは動作します... – nikotromus

+0

おそらく、その 'forEach'でキーをログアウトし、キーがテキスト入力のための適切なリファレンスであることを確認します。おそらく '' name_'' refという要素がありますか?いずれにせよ、それはあなたのために働いてうれしい:) – Ian

関連する問題