问题描述
我正在使用Firebase.auth()signInWithPhoneNumber(number,appVerifier)
一切正常,但是我正在尝试解决以下问题:
这是我的实现方式
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
},[])