每次我按下任一文本输入字段时都会调用登录函数
可触摸语句:
<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}`);
};
This is my expo link where I'm working on Textinput
有什么办法可以阻止它还是我在这里做错了什么。
最佳答案
login()
是一个箭头函数所以你不需要 bind()
它。实际问题是 onPress
支持你的TouchableOpacity
.这个 Prop 应该是一个函数,只要按下按钮就会被调用。
您不是传递函数,而是在 render()
中调用 login() 函数并将返回值(未定义)传递给按钮。您看到的行为是 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 - 每次按下 Textinput 时都会调用 TouchableOpacity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52179166/