当前位置 : 主页 > 网页制作 > React >

react-native – 无法在touchablehighlight onpress中设置state

来源:互联网 收集:自由互联 发布时间:2021-06-15
当我尝试在touchablehighlight onpress中设置状态时,我的应用程序崩溃了.这就是我得到的: TouchableHighlight onPress={this.setState({toggleCharacter: false})} Image style={styles.tekstballon} source={tekstballon} //To
当我尝试在touchablehighlight onpress中设置状态时,我的应用程序崩溃了.这就是我得到的:

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

我的最终目标是切换toggleCharacter,所以如果它是假的我想将它设置为true,如果它是真的我想将它设置为false但我不知道如何.

您在渲染时立即调用该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>
    );
  }
}
网友评论