我的React表单完成加载后,我需要运行一个简单的Java脚本函数。 JS是从第三方加载的,因此我无法控制它,并且我需要运行其功能之一才能使验证码部分显示在我的表单中。如果我按F5键,则该区域将按预期显示,但通过应用程序中的路线导航至该页面不会触发负载。
我已经解决了,如果我叫这行JS
window .__ challenger.callPageRequest();
然后出现验证码区域,我知道这是可行的,因为我向正在渲染的表单添加了一个临时按钮,并在按钮单击时调用了功能。但是我不能有一些随机按钮,每次导航到表单时,我只需要触发此JS行即可。
我试过使用:
componentDidMount() {
window.__challenger.callPageRequest();
}
但这抱怨:
无法读取未定义的属性“ callPageRequest”
而且我尝试添加:
window .__ challenger.callPageRequest();
到render方法中表单的末尾。
为什么做这么简单的事情这么难?任何帮助将不胜感激。
最佳答案
最简单(可能是最骇人的)是轮询window
并在触发该功能之前检查该功能的存在:
componentDidMount() {
const poll = () => {
if(window.__challenger && window.__challenger.callPageRequest) {
window.__challenger.callPageRequest();
}else {
setTimeout(() => {
poll();
}, 250);
}
};
poll();
}
如果它在第一遍中存在,请继续并立即调用它。如果尚不存在,请等待250毫秒,然后重试。