Reactjs signInWithEmailAndPassword失败:第二个参数“;密码”;必须是带react的有效字符串

Reactjs signInWithEmailAndPassword失败:第二个参数“;密码”;必须是带react的有效字符串,reactjs,firebase,firebase-authentication,Reactjs,Firebase,Firebase Authentication,我正在用react和firebase创建一个登录页面,我遇到了这个问题,email应该是一个有效字符串。以下是我到目前为止所做的: index.js: import React, { useState } from 'react'; import './login.css'; import firebase from '../../config/firebase'; import 'firebase/auth'; const Login = () => { const [ema

我正在用react和firebase创建一个登录页面,我遇到了这个问题,
email
应该是一个有效字符串。以下是我到目前为止所做的:

index.js:

import React, { useState } from 'react';
import './login.css';
import firebase from '../../config/firebase';
import 'firebase/auth';

const Login = () => {

    const [email, setEmail] = useState('');
    const [senha, setSenha] = useState('');

    const emailChangeHandler = (event) => {
        setEmail({
            email: event.target.value
        });
    }

    const senhaChangeHandler = (event) => {
        setSenha({
            senha: event.target.value
        });
    }

    const logar = () => {
        console.log(email);
        console.log(senha);
        firebase.auth().signInWithEmailAndPassword(email, senha).then(result => {
            alert('Usuário logado');
        }).catch(err => {
            alert('Algo deu errado');
            console.log(err);
        });
    }

    return (
        <div className="login-content d-flex align-item-center">
            <form className="form-signin mx-auto">
                <div className="text-center mb-4">
                    <h1 className="h3 mb-3 font-weight-normal headerLogin">Login</h1>
                </div>

                <input type="email" id="inputEmail" onChange={emailChangeHandler} className="form-control my-2" placeholder="Endereço de email" />
                <input type="password" id="inputPassword" onChange={senhaChangeHandler} className="form-control my-2" placeholder="Senha" />
                <button className="btn btn-lg btn-login btn-block my-2" onClick={logar} type="button">Entrar</button>

                <div className="msgsLogin text-white text-center my-5">
                    <span><strong>WoW!</strong> Você está conectado!</span>
                    <br></br>
                    <span><strong>OPS!</strong> Verifique se a senha ou usuário estão corretos!</span>
                </div>

                <div className="opcoesLogin mt-4">
                    <a className="mx-2">Recuperar Minha Senha</a>
                    <span className="text-white">&#9733;</span>
                    <a className="mx-2">Quero Cadastrar</a>
                </div>
            </form>
        </div>
    );
}

export default Login;

当我在console.log中记录我的电子邮件和密码时,它们显示为对象。是这样吗?我在这里遗漏了什么?

您正试图将您的状态设置为对象,而
senha
email
都是组件上定义的
string
类型

const [email, setEmail] = useState('');
const [senha, setSenha] = useState('');
因此,您应该对
senhaChangeHandler()
emailChangeHandler()
进行以下更改:

这样一来,
senha
email
都将是字符串,当使用
firebase.auth()调用时,它们可以被解析为有效参数

const [email, setEmail] = useState('');
const [senha, setSenha] = useState('');
const senhaChangeHandler = (event) => {
  setSenha(event.target.value);
};

const emailChangeHandler = (event) => {
  setEmail(event.target.value);
};