javascript - 如何在 next.js 页面中实现 Razorpay 支付按钮
问题描述
使用网站上的 Razorpay 支付按钮非常简单,它会给出如下代码
<form>
<script
src = "https://cdn.razorpay.com/static/widget/payment-button.js"
data-payment_button_id = "pl_FNmjTJSGXBYIfp"
data-button_text = "Buy Now"
data-button_theme = "brand-color">
</script>
</form>
但是在 react.js 上实现这个按钮时存在一些问题 按钮在检查器元素中可见但在屏幕中不可见。
解决方案
您可能不知道,但真正的问题在于组件内的脚本标记在渲染该组件后未执行。所以现在我在这里提出了一个解决方案,用于在渲染组件后执行这些脚本,方法是使用 react.js 中的 useEffect() 来选择该元素并在第一次渲染后附加脚本。
useEffect(()=>{
const Script = document.createElement("script");
//id should be same as given to form element
const Form = document.getElementById('donateForm');
Script.setAttribute('src','your src')
Script.setAttribute('data-payment_button_id','your id')
Form.appendChild(Script);
},[])
.
.
.
// form component
<form id='donateForm'> </form>
我使用的一些参考资料帮助我搜索了解决方案
推荐阅读
- r - 如何根据主数据框中的选定特征生成动态汇总表
- swift - 使用 MVVM 架构快速更新数据
- visual-studio - 系统重新启动后,模拟器选项未在 VS 2019 中显示
- azure - Azure AD 应用程序权限:是否可以获得“授予租户的其他权限”下的权限?
- datatables - 数据表:如何使用未知列序数获取列的总和
- python - Visual Studio Code 可以在运行或调试 Python 的过程中启动 xinit 吗?
- python - spacy-为什么 nlp() 适用于单个字符串,而 nlp.pipe() 适用于字符串列表?
- java - Android Webview "Sandboxing is not allowed" when loading iframe stream
- android - 无法在移动设备中安装颤振输出 APK
- python - Python Pandas 模式搜索