html - 如何为单页 React 应用程序中的链接实现 "Open link in new tab"

标签 html reactjs hyperlink single-page-application semantic-ui-react

为了在我的 React 应用程序中进行导航,我将 React Router DOM 与 History 结合使用。包。

这是导航在应用中的外观示例:

navigateToAccount() {
  history.push('/account');
}

在渲染中:

<Button content='My Account' onClick={this.navigateToAccount}/>
/*Button from Semantic UI React*/

到目前为止,这只会将客户端导航到“/account”页面。但问题是,不存在右键单击“在新选项卡中打开”的选项。因此,我尝试通过简单地使用 href 标签来修复它,如下所示:

<Button content='My Account' href='/account'/>

从表面上看,这似乎有效,右键单击时我们会得到“在新选项卡中打开链接”,左键单击将导航到所需的页面。这种方法的问题在于它违背了所需的单页应用程序结构。当左键单击按钮(从而激活导航到 href)时,它会从头开始加载(重新加载)页面。这意味着客户端将再次向服务器请求整个应用程序(bundle.js)。这会给服务器带来不必要的负载,并给客户端带来更长的加载时间。

我的问题是:有没有一种方法可以为链接/按钮启用“在新选项卡中打开链接”,而无需在左键单击所述链接/按钮时重新加载页面。

最佳答案

您可以使用Link组件(来自react-router-dom)本质上是 anchor 的包装器标记并为您处理重新加载的内容。您可以包裹Button像这样:-

<Link to='/account'><Button content='My Account'/></Link>

了解更多详情,请访问 - https://reactrouter.com/web/api/Link

关于html - 如何为单页 React 应用程序中的链接实现 "Open link in new tab",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66046846/

相关文章:

javascript - 如何使用 JavaScript 删除第一个文本区域上的文本来清除 2 个文本区域?

reactjs - 如何避免 "options" Prop 被内联初始化?

iframe - 如何在同一窗口中打开 fancybox 链接?

html - 整个按钮可点击

javascript - 转到单击事件 jquery 上的 anchor 链接

html - 为什么该图标在某些浏览器中显示而其他浏览器中不显示

javascript - 在 Mouseover 上为嵌套的 div 执行一个函数

javascript - 自定义 JQuery slider (自动滑动)

reactjs - 如何将来自 API 的响应保存到某个状态,以便我可以显示旧的搜索/响应?

javascript - 提交后清除 Redux 表单 - 多个单选按钮