【发布时间】:2021-10-22 10:44:41
【问题描述】:
我正在尝试使用以下提交按钮创建登录页面
<Button
color="primary"
disabled={isSubmitting}
fullWidth
size="large"
type="submit"
variant="contained"
onClick={() => { login(values.email, values.password); }}>
Sign in
</Button>
登录逻辑如下所示
const login = async (email, password) => {
try {
const user = await signInWithEmailAndPassword(
auth,
email,
password
);
console.log('User: ', user);
authenticated = true;
console.log('Authenticated: ', authenticated);
} catch (error) {
console.log('Error: ', error);
authenticated = false;
}
};
我的 formik 组件是这样的
<Formik
initialValues={{
email: '',
password: ''
}}
validationSchema={Yup.object().shape({
email: Yup.string().email('Must be a valid email').max(255).required('Email is required'),
password: Yup.string().max(255).required('Password is required')
})}
onSubmit={() => {
console.log('Authenticated: ', authenticated);
if (authenticated === true) {
navigate('/app/dashboard', { replace: true });
}
}}
>
我的想法是获取提交按钮的 onClick,在 onSubmit 运行之前运行登录逻辑,这会将 authenticated 设置为 true 并允许用户被重定向到 Dashboard.js。目前,onSubmit 似乎在 onClick 之前运行,导致 authenticated 具有其默认值 false,因此不会将用户重定向到仪表板。
【问题讨论】: