Reactjs signInWithEmailAndPassword失败:第二个参数“;密码”;必须是带react的有效字符串
我正在用react和firebase创建一个登录页面,我遇到了这个问题,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
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">★</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);
};