javascript - 每次按下 Textinput 时都会调用 TouchableOpacity

标签 javascript ajax react-native input

每次我按下任一文本输入字段时都会调用登录函数

可触摸语句:

<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/

相关文章:

reactjs - React Native + Appium iOS elementByAccessibilityId.text() 方法

ios - 将 React-native 应用程序添加到 IOS 上的 'Activities' 面板

javascript - 将 D3 工具提示放在光标位置

javascript - 如何使用计时器在图像之间切换? (设定间隔)

php - OctoberCMS Ajax 在前端排序

javascript - 如何创建与 Gmail 联系人管理器类似的行为

php - 使用 MooTools 单击我的按钮后进行 Ajax 调用

javascript - NodeJS(后端)从POST调用接收数据然后如何在ReactJS(前端)中显示?

javascript - 将 JPlayer 的播放列表与播放器分开以启用移动设备滚动

react-native - 如何在 react-native 中导入 `NodeJS.Timer` 类型