const [showRegister, setShowRegister] = useState(false);
const {
register,
handleSubmit,
formState: { errors },
reset,
} = useForm<FormSchemaType>({
resolver: zodResolver(formSchema),
});
const handleFormSubmit: SubmitHandler<FormSchemaType> = (data) => {
console.log("hello world");
if (showRegister === true) {
handleRegister(data);
console.log("registering data");
} else {
handleLogin(data);
console.log("logging in ");
}
};
const handleRegister: SubmitHandler<FormSchemaType> = async (data) => {
console.log(data);
const credentials = {
username: data.username,
password: data.password,
confirmPassword: data.confirmPassword,
email: data.email,
};
try {
const response = await add(credentials);
console.log(response);
reset();
} catch (error) {
console.log(error);
}
};
const handleLogin: SubmitHandler<FormSchemaType> = async (data) => {
console.log(data);
console.log("helloworld");
const credentials = {
username: data.username,
password: data.password,
};
try {
const response = await login(credentials);
console.log(response);
console.log(isSuccess);
navigate("/user");
reset();
} catch (error) {
console.log(error);
}
};
return (
<form onSubmit={handleSubmit(handleFormSubmit)}>
{/* input fields and other stuff */}
{showRegister ? (
<button type="submit" onClick={handleRegister}>
Register
</button>
) : (
<button type="submit" onClick={handleLogin}>
Login
</button>
)}
{showRegister ? (
<div>
Already Have An Account?
<p
style={{ cursor: "pointer", fontWeight: "bolder" }}
onClick={() => setShowRegister(false)}
>
Login
</p>
</div>
) : (
<div>
Dont Have an account?
<p
style={{ cursor: "pointer", fontWeight: "bolder" }}
onClick={() => setShowRegister(true)}
>
Sign Up
</p>
</div>
)}
</form>
);
无论我做了什么更改,handleLogin都没有被触发...不仅仅是关于API调用的问题,甚至像console.log这样的调试语句也没有执行。有人可以帮我解决吗?请问如何修复handleRegister函数在点击"Register"按钮时被调用,但在点击"Login"按钮时没有任何反应?
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
由于您正在使用表单的onSubmit事件,所以不需要为登录或注册按钮使用onClick事件。尝试在按钮上移除onClick事件后再试一次。