Я сделал функцию входа в систему:
export const userLogin = (email, password) => (dispatch) => {
console.info(email, password);
dispatch({ type: actionTypes.AUTH_LOGIN_STARTED });
console.info("after dispatch");
Parse.User.logIn(email, password, {
success(user) {
console.info("in success");
dispatch({
type: actionTypes.AUTH_LOGIN_SUCCESS,
user: user.toJSON(),
});
window.location.replace('/');
},
error(user, error) {
console.info("in error")
console.info({ error });
// The login failed. Check error to see why.
dispatch({
type: actionTypes.AUTH_LOGIN_ERROR,
error,
});
},
});
};
но он всегда застревает после Parse.User.logIn, он не проходит успешно или ошибочно. Я зарегистрировал адрес электронной почты и пароль, и они верны.
Так что мне здесь не хватает?



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


Parse.User.Loginне имеет третьего параметра. Вы должны использовать функции обещания:
Parse.User.logIn(email, password)
.then((user) => {
console.info("in success");
dispatch({
type: actionTypes.AUTH_LOGIN_SUCCESS,
user: user.toJSON(),
});
window.location.replace('/');
})
.error((user, error) => {
console.info("in error")
console.info({ error });
// The login failed. Check error to see why.
dispatch({
type: actionTypes.AUTH_LOGIN_ERROR,
error,
});
});
Или, если у вас хватит фантазии, вы можете использовать новый синтаксис await (который, я думаю, немного чище):
export const userLogin = (email, password) => async (dispatch) => {
console.info(email, password);
dispatch({ type: actionTypes.AUTH_LOGIN_STARTED });
console.info("after dispatch");
try {
const user = await Parse.User.logIn(email, password);
console.info("in success");
dispatch({
type: actionTypes.AUTH_LOGIN_SUCCESS,
user: user.toJSON(),
});
window.location.replace('/');
} catch (error) {
console.info("in error")
console.info({ error });
// The login failed. Check error to see why.
dispatch({
type: actionTypes.AUTH_LOGIN_ERROR,
error,
});
}
};
Любопытно, вы использовали первый или второй вариант @FaizanAhmad?
Я использовал второй вариант
Также: дважды проверьте параметры при ошибке. Я сомневаюсь, что он возвращает какой-либо пользовательский объект (просто
error)