我有一个要求要实现的地方-当表单加载,基础属性之一,其中包含一个网址链接-一个新的浏览器选项卡应自动打开该网址时,表单加载。
所以我检查了一些stakc溢出链接,找到了一个解决方案Maintaining href "open in new tab" with an onClick handler in React
const openInNewTab = (url) => {
const newWindow = window.open(url, '_blank', 'noopener,noreferrer')
if (newWindow) newWindow.opener = null
}
return (
<ul>
{dataset.map((x, id) => (
<li
key={id}
>
<b>{x.split('~')[0]}</b> - {checkString(x.split('~')[1])}
{x.split('~')[0]==='PAGE_URL' ?
openInNewTab(x.split('~')[1])
:
<></>
}
</li>
))}
</ul>
);
因此,与上述代码,当我的表单加载,它立即加载新的标签页浏览器的预期,但这里的问题是,每当我试图键入其他形式的问题或点击任何按钮,如单选按钮上的形式,每次它是打开新的标签页,我不想要的。我如何防止新标签页多次自动弹出或有任何其他解决方案?请帮助解决方案或替代方案。
我在上面提到了我试过的地方
1条答案
按热度按时间mv1qrgav1#
你可以通过useEffect钩子调用
openInNewTab
函数,当你在输入框中输入内容时,会打开一个新的标签页,这是因为react会因为状态改变而重新呈现那个组件,既然你希望这个函数只被调用一次,你可以把调用这个函数的逻辑移到useEffect钩子。