2016-10-22 3 views
0

touchablehighlight onpress에서 상태를 설정하려고하면 내 앱이 다운됩니다.touchablehighlight onpress에 설정할 수 없습니다.

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

내 궁극적 인 목표는 내가 true로 설정하려면 false 인 경우 그렇게 toggleCharacter를 전환하는 것입니다 그것이 사실이라면 나는 false로 설정하고자하지만 방법을 잘 모르겠습니다 : 이것은 내가 가진 무엇 .

답변

4

렌더링시 즉시 setState 호출을 호출합니다.

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

위의 약간은 모든 인스턴스에 대한 새로운 함수를 만드는 것으로 눈살을 찌푸리게되고, 명심 그러나 그것은 단지에 의미 : 당신은 대신 onPress에 호출 될 함수, 즉 그것을 포장 할 필요가 왜 오류가 발생했는지에 대한 아이디어를 제공합니다 (클래스 자체에 추가하는 것이 더 효과적입니다).

편집 의견을 편집하십시오. 위에서 언급 한 '더 나은'방법은 다음과 같습니다.

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

덕분에 많은 매력 작품처럼! –

관련 문제