I have a problem calling a function in React.
I have a login which takes as inputs an email and password and when I press the button I have defined that the function handleLogin
is called. The code of this function is as follows:
const handleLogin = () => {
event.preventDefault();
getToken({ variables: { email: mailInputData, password: passwordInputData } });
if (dataResponse.data) {
if (
dataResponse.data.authLogin !== "User not found" &&
dataResponse.data.authLogin !== "Wrong password"
) {
localStorage.setItem('token', dataResponse.data.authLogin);
window.location.href = "/dashboard";
} else {
Swal.fire({
icon: "error",
title: "Oops...",
text: "Usuario o contraseña incorrectos",
});
}
}
};
The query to obtain the token is done through GraphQL using useLazyQuery
.
const DATA_QUERY_LOGIN = gql`query ($email: String!, $password: String!) {
authLogin(email: $email, password: $password)}`;
const [getToken, dataResponse] = useLazyQuery(DATA_QUERY_LOGIN);
When the button is pressed, the handleLogin
function is called in the following way:
<MDButton variant="gradient" color="dark" fullWidth onClick={handleLogin}>
Login
</MDButton>
If I type an incorrect username or password and press the button, I receive the corresponding "incorrect username or password" alert, but if I then type the correct username and password and press the button I still receive the "incorrect username or password" alert. I have to press the button again (without making a change in the inputs) to get the token back.
And always the same thing happens, if I press the button, change the value of the inputs to a correct user, and then press it again, I get exactly the same response as the previous GraphQL query, but if I press it again this time it returns the token.
Could someone please help me?
Thanks :)
Via Active questions tagged javascript - Stack Overflow https://ift.tt/3BGuOmi
Comments
Post a Comment