首页 > 解决方案 > 每次按下 Textinput 时都会调用 TouchableOpacity

问题描述

每当我按下任一文本输入字段时,登录功能都会调用

触手可及的声明:

<TouchableOpacity
     style={InputFieldStyle.submitButton}
     onPress={this.login(this.state.email, this.state.password)}>
          <Text style={InputFieldStyle.submitButtonText}>Submit Me</Text>
</TouchableOpacity>

登录功能:

login = (email, pass) => {
     alert(`Email: ${email} Password: ${pass}`);
};

这是我正在处理 Textinput 的博览会链接

有什么办法可以阻止它,或者我在这里做错了什么。

标签: javascriptajaxreact-nativeinput

解决方案


login()是一个箭头函数,所以你不需要bind()它。实际问题是onPress你的TouchableOpacity. 这个道具应该是一个在按下按钮时调用的函数。

您不是传递函数,而是调用 login() 函数render()并将返回值(未定义)传递给按钮。您看到的行为login()每次都会被调用render()

解决方案将是改变:

<TouchableOpacity onPress={this.login(this.state.email, this.state.password)} {...otherProps}>

<TouchableOpacity onPress={() => {this.login(this.state.email, this.state.password)}} {...otherProps}>


推荐阅读