javascript - 每次按下 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}`);
};
有什么办法可以阻止它,或者我在这里做错了什么。
解决方案
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}>
推荐阅读
- javascript - 将带连字符的输入参数发送到 api
- android - Android webview : 显示网页访问认证的默认 JS 弹窗
- oauth-2.0 - 找出谁使用 OAuth 重定向 uri 邀请了我的机器人服务器
- data-structures - 如何为不同的特征集实现相同的方法?
- javascript - Angular命名路由器出口没有匹配的路线
- sql - 如何将计算值添加到列中
- amazon-web-services - 在代码构建中构建后回显 ec2 实例 ID
- numpy - 使用来自 linspace 的坐标获取矩阵中的索引
- list - SwiftUI 列表不显示文本视图
- scala - 从 Spark 数据帧中的结构数组中过滤出空值结构