2017-03-27 17 views
0

私はReactNativeに新たなんだ、私は、ユーザーがButtonをクリックしたときに動的にViewを追加しようとしています私のthis.state.rowsにエラーundefined is not a objectを取得しています。私は thisを使用しようとしましたが、getInitialStateの代わりにconstructor(props)を使用しましたが、上記のエラーが続いています。ここに私のコードです未定義のthis.stateにはオブジェクトではありません - ReactNative

constructor(props) { 
super(props); 
this.state = { 
    rows: [], 
}; 
} 

addRow(){ 
this.state.rows.push(index++) 
this.setState({ rows: this.state.rows }) 
} 

render(){ 

let contactView =() => { 
    return <View> 
       <AddComponent /> 
      </View> 
} 

return(
<View> 
     <View> 
     {contactView} 
     </View> 

     <TouchableHighlight onPress={ this.addRow } > 
     <Text>Add</Text> 
     </TouchableHighlight> 
    </View> 
); 

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

答えて

6

は、次のような機能のAddRowにthisをバインドする必要があります。

<TouchableHighlight onPress={ this.addRow.bind(this) } > 
    <Text>Add</Text> 
</TouchableHighlight> 

かは、これを自動的にバインドする無名関数を作成します。説明についてはthisを参照してください

<TouchableHighlight onPress={() => this.addRow() } > 
    <Text>Add</Text> 
</TouchableHighlight> 

+0

私のエラーは解決されました。私はボタンをクリックしたときに表示されないので、 'View'がどのように追加されて表示されるのか調整する必要があると思います。ありがとうございました。 – natsumiyu

+0

arrowの機能は私のために働いた。以前私は ''を持っていましたが、 ' this.myFunction()}>'を実行する必要がありました。 – arnoldbird

0

これも可能です。

export default class CustomCard extends React.Component{ 
    constructor(props) { 
     super(props); 

     // This binding is necessary to make `this` work in the callback 
     this.functionName= this.handleUpvote.bind(this); 
    } 
} 

このように呼び出すことができます。

<TouchableHighlight onPress={this.functionName} > 
    <Text>Add</Text> 
</TouchableHighlight> 
関連する問題