Firebase auth React dom router navigate if there are no error

Firebase auth React dom router navigate if there is no error

我有一个注册功能,可以在 firebase auth 中注册用户。我的问题是,即使注册出现错误,用户也会被导航到主页。如果在注册期间没有错误,我如何修复我的功能以编程方式导航用户

 const handleSubmit = (event) => {
    event.preventDefault();

    const data = new FormData(event.currentTarget);

    try {
      //signup is a prop function
      signup(data.get("email"), data.get("password"));
    } catch (error) {
      setError(error.message);
      return;
    }

    navigate("/" + location.search);
  };

在没有其他上下文的情况下,我有信心猜测这很可能是因为您的 signup 是一个 async 函数。 signup 上没有 awaitsignup 将仅在 handleSubmit 完成后开始。为了 await 它,你必须声明 handleSubmit 是一个 async 箭头函数。

注意我添加的asyncawait

const handleSubmit = async (event) => {
  event.preventDefault();

  const data = new FormData(event.currentTarget);

  try {
    await signup(data.get("email"), data.get("password"));
  } catch (error) {
    setError(error.message);
    return;
  }

  navigate("/" + location.search);
};

为了更好地理解这个概念,请务必阅读有关 Async Functions and the JS Event Loop

的更多信息