React-Router 在新选项卡中打开链接

IT技术 reactjs react-router
2021-03-31 11:53:05

有没有办法让React Router在新标签页中打开链接?我试过这个,但没有用。

<Link to="chart" target="_blank" query={{test: this.props.test}} >Test</Link>

可以通过向onClick="foo"链接添加类似我上面的内容来弄乱它,但是会出现控制台错误。

谢谢。

6个回答

从 React Router 5.0.1 版开始,您可以使用:

<Link to="route" target="_blank" rel="noopener noreferrer" />
在 react-router 5.0.1 中,添加似乎target="_blank"足以解决问题。
2021-05-30 11:53:05
React Router 的当前版本是什么;)
2021-06-04 11:53:05
@AbhishekNalin 如何获取 this.makeHref 并在 this.makeHref 中发送参数
2021-06-07 11:53:05
注意这个评论。使用rel='noopener noreferrer'如果使用target="_blank"
2021-06-15 11:53:05
谢谢!target="_blank"为我工作 :) 在 react-router 5.0.1
2021-06-16 11:53:05

我认为 Link 组件没有它的props。

您可以通过创建标签并使用导航 mixin 的 makeHref 方法来创建您的网址

<a target='_blank' href={this.makeHref(routeConsts.CHECK_DOMAIN, {},
   { realm: userStore.getState().realms[0].name })}>
        Share this link to your webmaster
</a>
我相信 makeHref 函数已重命名为 createHref 并已删除。stackoverflow.com/a/35066996/6004931 github.com/ReactTraining/history/issues/365
2021-06-09 11:53:05
这里调用的是href自调用函数,会导致重新渲染ALERT!
2021-06-17 11:53:05

我们可以使用以下选项:-

 // first option is:-
    <Link to="myRoute" params={myParams} target="_blank">

 // second option is:-
    var href = this.props.history.createHref('myRoute', myParams);
    <a href={href} target="_blank">

 //third option is:-
    var href = '/myRoute/' + myParams.foo + '/' + myParams.bar;
    <a href={href} target="_blank">

我们可以使用三个选项之一通过react路由在新选项卡中打开。

一些 iPhone 会忽略“target='_blank'”。对于这些手机,这似乎仍然会失败。
2021-05-26 11:53:05
注意事项target='_blank':建议添加rel='noopener noreferrer'到您的<a>标签中
2021-06-01 11:53:05

目标可以使用“{}”,这样jsx就不会哭了

<Link target={"_blank"} to="your-link">Your Link</Link>

对于外部链接,只需使用 achor 代替链接:

<a rel="noopener noreferrer" href="http://url.com" target="_blank">Link Here</a>
原因rel="noopener noreferrer"可以在这里找到mathiasbynens.github.io/rel-noopener
2021-05-24 11:53:05