React Native集成Firebase认证点击注册报props.handler is not a function错误
报错核心原因
- 你命名为
Signup.js的文件末尾默认导出的匿名组件内,渲染Signin/Signup业务组件时没有传递任何props,你在App.js中给路由对应组件传递的handler属性没有被透传到实际触发点击事件的业务组件中 - 你贴出的
Signup.js文件内的按钮点击事件还传入了未定义的username变量,和父组件定义的SignupHandler/SigninHandler入参不匹配 - 额外存在重复初始化Firebase的问题,可能引发后续报错
修复步骤
- 修正页面文件的导出逻辑
删除Signup.js(如果你贴的是Signin.js的内容同理)末尾的默认导出代码:
// 删掉这段冗余代码 export default () => { return ( <NativeBaseProvider> <Signin /> </NativeBaseProvider> ) }
改为直接导出你写的业务组件即可,NativeBaseProvider统一放在入口文件包裹即可,不需要每个页面单独加。
2. 修正按钮点击传参
把登录/注册按钮的onPress调用逻辑修改为:
onPress={ () => { props.handler(email,password) }}
删除不存在的username参数,和父组件定义的处理函数入参对应。
3. 删除重复的Firebase初始化代码
删掉App.js里多余的初始化调用:
// 删掉这行重复代码 initializeApp(firebaseConfig)
你已经在之前完成过Firebase初始化,不需要重复调用。
4. 如果你是把注册页的代码错贴成了登录页的内容,把对应页面的组件名、文案、跳转逻辑对应修改为注册相关的内容即可。
内容的提问来源于stack exchange,提问作者Juan
相关产品推荐
相关产品推荐

