React Native基于Firebase的Google登录函数未点击onPress就提前执行问题
问题诱因
问题出在LoginSocial组件的Google登录按钮事件绑定逻辑上:
- React Native的
TouchableOpacity组件onPress属性要求接收函数引用,仅当用户点击按钮时才会触发执行对应函数 - 你当前代码中写的是
onPress={loginGoogle()},函数名后加了括号,相当于组件渲染阶段就会立即调用loginGoogle方法,因此只要跳转到注册页、LoginSocial组件加载完成,Google登录弹窗就会自动弹出,和用户点击操作无关。
修复方案
两种修改方式二选一即可:
- 用匿名函数包裹方法调用,确保点击时才执行
<TouchableOpacity onPress={() => loginGoogle()} style={[styles.buttonContainer, { backgroundColor: "#f7d7d4" }]} >
- 直接传入
loginGoogle函数引用(无需加括号,适用于方法不需要额外传参的场景)
<TouchableOpacity onPress={loginGoogle} style={[styles.buttonContainer, { backgroundColor: "#f7d7d4" }]} >
你之前注释掉的onGoogleButtonPress包裹函数也是正确的用法,取消注释后绑定onPress={onGoogleButtonPress}也可以解决问题。
内容的提问来源于stack exchange,提问作者nanquim
相关产品推荐
相关产品推荐

