我用多个# routes和GoogleRecaptchaV 3编写了React应用程序,
我想在特定的页面上显示recaptcha浮动(#路由),如登录和表单。
如何实现这一点。
尝试过-
.grecaptcha-badge {
visibility: hidden;
}
#root #mainContainer .login:not(.empty) + div>.grecaptcha-badge {
visibility: visible;
}
.grecaptcha-badge {
visibility: hidden;
}
#root #mainContainer .login ~ div>.grecaptcha-badge {
visibility: visible;
}
在google recaptcha呈现之前,通过javascript〉componentWillMount -〉page的componentWillmount调用显示隐藏,因此它不会获取元素
4条答案
按热度按时间j5fpnvbx1#
我(和其他许多人一样)也有同样的问题。
在我的例子中,我使用react-route,在那里我可以监听路径的变化。所以我最终删除了脚本和徽章元素的页面上,我不需要它,并添加它(如果必要的话)在某些路径。
希望它能在未来帮助某人
cwdobuhd2#
在组件外声明以下内容:
内部调用这个
useEffect
钩子:sd2nnvve3#
如果我们希望有条件地删除react应用中的Google reCAPTCHA,我们可以使用CDM()生命周期方法:
1.删除脚本
1.移除reCAPTCHA徽章
我用的是react-google-recaptcha-v3,检查GoogleReCaptchaProvider的类,可以找到scriptId,和上面Ivan Yulin提到的完全一样。
但是,即使删除了脚本,我在DOM中看到的脚本
我们如何才能把这个也去掉呢?
frebpwbc4#
我找到了一个不需要使用css样式的解决方案,这样如果不应该使用google验证码,它就不会被渲染。
1.在nextjs app的根文件中声明:
1.然后简单地对
<Component {...pageProps} />
使用条件渲染:这意味着google验证码只会在你浏览到
/contact
路由时才能显示和工作,你可以在这里输入任何你想要的路由。