При входе пользователя в систему появляется следующая ошибка.
The email address is badly formatted.
Однако я могу зарегистрироваться нормально.
рабочая демонстрация (без входа в систему)
https://stackblitz.com/edit/react-herqe7
Возможно, это мой файл конфигурации firebase.
firebaseConfig.js
import React, { Component } from 'react';
import firebase from 'firebase/app';
import 'firebase/auth';
import 'firebase/database';
const config = {
apiKey: "*******",
authDomain: "*******",
databaseURL: "*******",
projectId: "*******",
storageBucket: "",
messagingSenderId: "*******"
};
firebase.initializeApp(config);
export const database = firebase.database()
export const auth = firebase.auth()
export const googleProvider = new firebase.auth.GoogleAuthProvider()
Actions.js
export const signIn = (user) => { return (dispatch) => {
firebaseAuth.signInWithEmailAndPassword(user.email.trim(), user.password)
.then(()=> {
dispatch({type: 'SIGNIN_SUCCESS'})
}).then((response) => {
history.push('/dashboard');
}).catch( (err) => {
dispatch({ type: 'SIGNIN_ERROR', err});
});
}
}



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я думаю, что проблема в SignIn.js связана с изменением дескриптора и отсутствием у входов name = "email" name = "password". Вы устанавливаете состояние с помощью e.target.name, но вход для электронной почты не имеет имени. Если вы поместите консольный журнал в свой handleChangeEvent, вы увидите, что e.target.name - это "" не то, что вы хотите, чтобы это был адрес электронной почты, пароль и т. д.
handleChangeEvent = e => {
console.info(e.target.name);
const { formData } = this.state
this.setState({
formData: {
...formData,
[e.target.name]: e.target.value
}
});
};
Добавьте name = "email" в свой адрес электронной почты, чтобы e.target.name при изменении дескриптора имело значение ключа для setState.
<input
type = "email"
name = "email"
className = "form-control"
id = "exampleInputEmail1"
onChange = {this.handleChangeEvent}
aria-describedby = "emailHelp"
placeholder = "Enter email"
/>
также понадобится один для пароля:
<input
name = "password"
etc