2016-08-10 7 views
0

私はReact Nativeでレンダリングする行のリストがあります。各行には、オブジェクトに関連する操作を実行するための情報とボタンが含まれています。JSXビューがコンカチネーションされているときのonPressパラメータ値が正しくありません

行をレンダリングするには、リストを繰り返し、新しい行ごとにJSXマークアップを配列に追加します。

for (i = 0; i < this.state.values.length; i++) { 
    var theVariable = this.state.values[i].id; 
    returnValue.push(
    <View style={{flexDirection: 'column', borderTopWidth: .5, borderColor: 'grey'}} 
     <View style={[s.rowStyle, {justifyContent: 'center'}]}> 
     <TouchableHighlight style={s.buttonOutlineActiveRental} underlayColor='transparent' onPress={() => this._someFunction(theVariable)}> 
      <Text style={s.buttonText}> 
      Click me! 
      </Text> 
     </TouchableHighlight> 
     </View> 
    </View> 
); 
} 

問題は、オンプレス機能の値が正しくありません。いくつかのデバッグを通じて、私はtheVariableが最終行のtheVariableと常に等しいことを発見しました。これは、各行が常に変数の最新バージョンを指していると信じさせてくれます。

この場合、オンプレス機能でパラメータを渡す適切な方法は何ですか?

+0

これは、参照を格納してこの参照を渡しているために起こると思います。反復ごとに参照される変更は何ですか。 –

答えて

2

まず、varletに変更することをお勧めします。次に、宣言をループから外します。

次に、「行」の新しいコンポーネントを作成します。変数を小道具として行に渡します。これは、問題を解決するコンポーネントに現在の値をバインドする必要があります。

+0

ご協力ありがとうございます!これらの提案はうまくいった。行のための新しいコンポーネントを作ることについて考えなかった。 –

関連する問題