【问题标题】:Error: The email address is badly formatted - React-native - Firebase错误:电子邮件地址格式错误 - React-native - Firebase
【发布时间】:2021-01-03 21:04:52
【问题描述】:

我正在尝试使用 firebase 在 react-native 中执行登录应用程序,目前我尝试打开该应用程序,一个警报显示“错误:电子邮件地址格式错误”。 当我按下登录按钮时,错误是“TypeError:_this.props.onPress 不是一个函数。(In'_this.props.onPress' 是 Promise 的一个实例)”

登录.js

import React, { useState } from 'react';
import { Text, View, TouchableHighlight, TextInput } from 'react-native';
import firebaseService from '../../services/firebase';
import Main from '../main/Main';
import styles from './styles';

const Login = ({navigation}) => {

  const[user, setUser] = useState('');
  const[pass, setPass] = useState('');

  const onPressLogin = async () => {
    try{
      await firebaseService.login(user, pass);
      navigation.navigate(Main);
    } catch (e) {
      alert(e);
    }
  }

  return (
    <View style={styles.container}>
      <View>
        <TextInput
          placeholder="Email"
          value={user} 
          onChange = {(e) => setUser(e.nativeEvent.text)}
          style={styles.inputText}
        />
        <TextInput 
          placeholder="Password" 
          value={pass} 
          onChange = {(e) => setPass(e.nativeEvent.text)}
          style={styles.inputText}
        />
      </View>
      <TouchableHighlight style={[styles.button, styles.loginButton]}onPress={onPressLogin()}>
        <Text style={styles.textButton}>Login</Text>
      </TouchableHighlight>
      <TouchableHighlight style={[styles.button, styles.signUpButton]} onPress={() => navigation.navigate('SignUp')}>
        <Text style={styles.textButton}>Create new user</Text>
      </TouchableHighlight>
    </View>
  );
}

export default Login;

firebase.js

import * as firebase from "firebase/app";
import 'firebase/firebase-firestore';
import 'firebase/firebase-auth';

// For Firebase JS SDK v7.20.0 and later, measurementId is optional
const firebaseConfig = {
    apiKey: "*******",
    authDomain: "*******",
    databaseURL: "*******",
    projectId: "*******",
    storageBucket: "*******",
    messagingSenderId: "*******",
    appId: "*******",
    measurementId: "*******"
  }

  class Firebase {
      constructor(){
          firebase.initializeApp(firebaseConfig);
          this.auth = firebase.auth();
      }

      login = (email, pass) => {
        return this.auth.signInWithEmailAndPassword(email, pass);
      }
  }

  const firebaseService = new Firebase();
  export default firebaseService;

【问题讨论】:

    标签: android reactjs firebase react-native firebase-realtime-database


    【解决方案1】:

    因为你正在向onPress 传递一个承诺

          <TouchableHighlight style={[styles.button, styles.loginButton]}onPress={onPressLogin()}>
    

    你可以通过函数传递

          <TouchableHighlight style={[styles.button, styles.loginButton]}onPress={onPressLogin}>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-01
      • 2018-02-18
      • 2018-09-24
      • 2018-09-09
      • 2020-02-27
      • 1970-01-01
      • 2018-09-07
      • 2022-12-04
      相关资源
      最近更新 更多