如何成功重置signInWithPhoneNumber的验证码

问题描述

我正在使用Firebase.auth()signInWithPhoneNumber(number,appVerifier)

一切正常,但是我正在尝试解决以下问题:

enter image description here

这是我的实现方式

  useEffect(() => {
    window.recaptchaVerifier = new app.auth.RecaptchaVerifier("sendBtn",{
      size: "invisible",callback: function () {
        onSend();
      },});
  });

  const onSend = (value) => {
    const appVerifier = window.recaptchaVerifier;
    const setMobile = "valid mobile..";
    firebase
      .auth()
      .signInWithPhoneNumber(setMobile,appVerifier)
      .then(function (confirmationResult) { 
        appVerifier.reset()
        console.log(confirmationResult)
      })
      .catch(function (error) {
        appVerifier.reset()
        console.log(error);
      }); 
  };

如何正确处理Recaptcha?没有多次渲染。我希望成功地在Recaptcha上销毁它,我已经浏览了文档here,但是clear()或reset()似乎不起作用

解决方法

您可以提供一个空的依赖关系数组,以使用useEffect仅在初始渲染后触发,有关更多详细信息,请参见Stack Overflow Answer

另外,在尝试初始化新的{{1}之前,最好先添加if检查以查看是否设置了window.recaptchaVerifier(以防组件在页面上的其他任何地方都使用了Recaptcha)。 }。

RecaptchaVerifier
,

您必须提供useEffect的依赖项,否则它将在每次组件渲染时执行。

useEffect(() => {
  // recaptcha
},[])