我按下登录按钮后,我的handleLogin函数没有被触发?
P粉587780103
P粉587780103 2023-07-28 15:44:46
[React讨论组]


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"按钮时没有任何反应?

P粉587780103
P粉587780103

全部回复(1)
P粉021854777

由于您正在使用表单的onSubmit事件,所以不需要为登录或注册按钮使用onClick事件。尝试在按钮上移除onClick事件后再试一次。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号