Адрес электронной почты Firebase React-Redux плохо отформатирован

При входе пользователя в систему появляется следующая ошибка.

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});
        });
    }

}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
536
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, что проблема в 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

Другие вопросы по теме