[英]Third Party script not consistently find button with certain id in react component
我正在创建一个包含第三方(NMI)来收集付款信息的Web应用程序。 NMI提供的脚本可以完成所有工作,只需添加一个ID为'payButton'的html按钮,然后单击该按钮,便会弹出一个对话框,以收集抄送信息。
以下是我能够使其正常工作的唯一情况。
<html lang="en">
<head>
<!-- Other imports -->
<!--
NMI Collect.js script
-->
<script src="https://secure.networkmerchants.com/token/Collect.js" data-tokenization-key="security_key"></script>
<title>React App</title>
</head>
<body></body>
</html>
class App extends Component {
render() {
return (
<div>
<button type="button" id="payButton">Pay $5</button>
</div>
)
}
}
现在,上面的代码可以正常工作。 我可以单击该按钮,弹出窗口会像应有的那样打开,但是当我想根据组件的状态隐藏或显示该按钮时,弹出窗口将无法工作。 下面的代码是这种情况下不起作用。
class App extends Component {
render() {
const test = false
let data
if(test) {
data = <div></div>
} else {
data = <button type="button" id="payButton">Pay $5</button>
}
return (
<div>
{data}
</div>
)
}
}
该脚本最有可能在按钮上寻找并直接在其上添加一个侦听器。 这意味着,一旦某些状态发生变化将隐藏按钮,则该按钮将从DOM中删除,并且监听器也随之丢失。
您需要检查NMI api,以查看具有哪些选项。 如果有手动方式重新连接侦听器,则可以在组件更新且按钮再次显示时执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.