2016-10-22 15 views
0

touchablehighlight onpressで状態を設定しようとすると、アプリケーションがクラッシュします。touchablehighlight onpressでsetStateできません

<TouchableHighlight onPress={this.setState({toggleCharacter: false})}> 
    <Image style={styles.tekstballon} source={tekstballon} /> 
</TouchableHighlight> 

私の究極の目標は、私がtrueに設定したいfalseの場合はそうtoggleCharacterを切り替えることであり、それは本当だ場合、私はfalseに設定したいが、私はどのように確認していない:これは私が得たものです。

答えて

4

レンダリング時にすぐにそのsetState呼び出しを呼び出しています。あなたは代わりたonPressに呼び出される関数、すなわちでそれをラップする必要があります。

<TouchableHighlight onPress={() => this.setState({toggleCharacter: false})}> 

それはすべてのインスタンスのための新しい関数を作成していますと上記ビットは眉をひそめているが、それはただの意味だ、覚えておいてくださいなぜあなたはあなたのエラーを取得しているのかを知ることができます(クラス自体にそれを追加するのに少し多めです)。

コメントを編集しました。上記の「より良い」方法は、次のようになります。

class myComponent extends React.Component { 

    /* 
    ...ctor and methods above 
    The below assumes Property initializer syntax is available. 
    If not, you need to autobind in the constructor 
    /* 
    handleOnPress =() => this.setState({ toggleCharacter: false }) 

    render() { 
    return (
     <TouchableHighlight onPress={this.handleOnPress}> 
     <Image style={styles.tekstballon} source={tekstballon} /> 
     </TouchableHighlight> 
    ); 
    } 
} 
+0

この作品をありがとうございましたが、どのように正確に私がそれをより良くすることができるのか分かりません。レンダリングの外に関数を作成してonPressで呼び出す必要がありますか? –

+0

上記のコメントを参照してください。本質的にはそうです。クラス自体のメソッドにするだけです。 –

+0

ありがとう、魅力のように多くの作品! –

関連する問題