reactjs 在react中加载页面时自动打开新选项卡

xuo3flqw  于 2023-01-12  发布在  React
关注(0)|答案(1)|浏览(272)

我有一个要求要实现的地方-当表单加载,基础属性之一,其中包含一个网址链接-一个新的浏览器选项卡应自动打开该网址时,表单加载。
所以我检查了一些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>&ensp;-&ensp;{checkString(x.split('~')[1])}
                    {x.split('~')[0]==='PAGE_URL'  ?  
                        openInNewTab(x.split('~')[1])
                    :
                    <></>
                }
                </li>
               
            ))}
            </ul>
        );

因此,与上述代码,当我的表单加载,它立即加载新的标签页浏览器的预期,但这里的问题是,每当我试图键入其他形式的问题或点击任何按钮,如单选按钮上的形式,每次它是打开新的标签页,我不想要的。我如何防止新标签页多次自动弹出或有任何其他解决方案?请帮助解决方案或替代方案。
我在上面提到了我试过的地方

mv1qrgav

mv1qrgav1#

你可以通过useEffect钩子调用openInNewTab函数,当你在输入框中输入内容时,会打开一个新的标签页,这是因为react会因为状态改变而重新呈现那个组件,既然你希望这个函数只被调用一次,你可以把调用这个函数的逻辑移到useEffect钩子。

相关问题