2016-05-07 3 views
1

JSON { "ACTIONTYPE" に基づいて、ボタンをレンダリングするためにネイティブたい反応します":" this.getCellNumber( 'no') "、 " style ":" }、{ "フィールド": "ボタン"、 "FieldText": "No"、 "FieldAction": "これは、 getCellNumber( 'はい')」、 "スタイル": "" }] }レンダリング複数のボタンは、プログラム

どのように再で、私はループにそれをすることができますビュー内のボタン数を取得する関数です。

render(){ 
    return(

     <View style={this.styles.ButtonValContainer}> 

     </View> 
); 

} 

答えて

2

が反応すると、レンダリングする要素の配列を簡単に収集できます。

const buttons = [ 
    { 
     text: 'button one', 
     action:() => console.log('pressed button one'), 
    }, 
    { 
     text: 'button two', 
     action:() => console.log('pressed button two')    
    } 
]; 

....

// react class definition 

// ... 
// assuming `Button` is a defined class in scope. 

render() { 
    const renderedButtons = buttons.map(b => { 
    return <Button key={b.text} text={b.text} onPress={b.action} />; 
    }); 

    return (
    <View> 
    {renderedButtons} 
    </View> 
) 
} 

ビットに役立ちます願っています。

+0

ありがとう@ mason505、これは役立ちます。 – Nilesh

+0

私はボタン配列にタイプミスがあると信じています。ボタン2は 'test'と呼ばれていますが、 'text'でなければなりません。 – Lilp

+0

あなたは正しいです。私は答えを更新します、ありがとう – mason505

0

リストを反復処理し、コールバック内のコンポーネントを返すことができます。 https://facebook.github.io/react/docs/multiple-components.html

:唯一の要件は、返されたコンポーネントが再レンダリング時にリアクト内部で使用されている key属性、持っているということです

render() { 
    return(
    <Wrapper> 
     {items.forEach(function(item) { 
     return (
      <View style={this.styles.ButtonValContainer} key={'UNIQUE_KEY_HERE'}> 
      ... 
      </View> 
     ); 
     })} 
    </Wrapper> 
); 
} 

がここにいくつかの詳細情報です(それは削除するかを知っているように/シフトは、/ etcを更新します)

+0

ExceptionsManager.js:61要素タイプが無効です:文字列(組み込みコンポーネントの場合)またはクラス/関数(複合コンポーネントの場合)が必要ですが、未定義です。 – Nilesh