2016-06-16 8 views
1

のは、私は同じように、コンポーネントを持っているとしましょう:ベストプラクティス(データなし)リアクト

<FormInput label="Phone Number" /> 

と私はUI上でそれらのN番号を描きたいです。これを達成するためのベストプラクティスは何でしょうか?これは、もちろん、そこに少しハックthough.Is「思考が反応」より、より慣用的な方法である

var myMapTrigger = [0,0,0,0,0] 
myMapTrigger.map(function(){ 
    return (<FormInput label="Phone Number" />) 
} 

:私の最初の考えは、私は同じように、マップを使用できるようにNのメンバーの配列を作成するのですか?

+1

を実際に質問を反応しません。 JavaScriptの中で、「何回N回何をやるか」のようなものです。範囲機能を使用/作成するか、このようなことをすることができます。http://stackoverflow.com/questions/1295584/most-efficient-way-to-create-a-zero-filled-javascript-array – azium

+0

@azium私はそれを認めますこれはReactのドキュメント/コミュニティではまだ遭遇していないことです。正直言って質問があり、ベストプラクティスであれば議論が必要です。 –

答えて

1

あなたがLodashを使用することができる場合は、_.timesがうまくいくはずです。

_.times(N, i => <FormInput key={i} label="Phone Number" />); 

は(幸せに反応させることkeyを指定することを忘れないでください。)そのような

+0

'_x(数値、関数) ' – azium

+0

@azium - 修正されました。ありがとう。 –

0

何かを、あなたがlodashを含めるいけない場合:

renderForm() { 

    const times = 5; 
    const inputs = []; 

    for(var i=0; i<times;i++) { 
     inputs.push(<FormInput key={i} label="Phone Number" />); 
    } 
    return inputs; 
} 

render() { 
    return <div>{this.renderForm()}</div>; 
} 
+0

これは明示的なforループの代わりにmap()を使って行っていますが、これで終わった解決策にかなり似ています。私は時と入力がconstだとは思っていません... constがrValを不変にしないことを知っている間、私は大会ではそれらがvarであるべきだと提案していると思います。 –

+1

コンベンションはconstを毎回使用すると言います。オブジェクトの場合、配列)。それ以外の場合は、letを使用します。私は繰り返し使用する配列がないために使用しました。タイムカウンターです。しかし、これは目標を達成する単なる方法です。もちろん、他にもあります。 – mrlew

関連する問題