React-ルーターは新しいタブでリンクを開きます


90

ReactRouterに新しいタブでリンクを開かせる方法はありますか?私はこれを試しましたが、うまくいきませんでした。

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

次のようなものを追加することでそれを綿毛にすることが可能です onClick="foo"にリンクに次のようなものをことは可能ですが、コンソールエラーが発生します。

ありがとう。

回答:


41

リンクコンポーネントにはそのための小道具がないと思います。

タグを作成し、ナビゲーションミックスインのmakeHrefメソッドを使用してURLを作成することで、別の方法を使用できます。

<a target='_blank' href={this.makeHref(routeConsts.CHECK_DOMAIN, {},
   { realm: userStore.getState().realms[0].name })}>
        Share this link to your webmaster
</a>

ここでは、href自己呼び出し関数を呼び出しています。これにより、アラートが再レンダリングされます。
AnupamMaurya20年

makeHref関数はcreateHrefに名前が変更され、その後削除されたと思います。stackoverflow.com/a/35066996/6004931 github.com/ReactTraining/history/issues/365
ニック・グラハム

82

React Routerバージョン5.0.1以降では、以下を使用できます。

<Link to="route" target="_blank" onClick={(event) => {event.preventDefault(); window.open(this.makeHref("route"));}} />

47
Reactルーターの現在のバージョンは何
ですか

1
@AbhishekNalinはサイドthis.makeHrefにthis.makeHref、送信パラメータを取得する方法
Dharmesh

15
react-router 5.0.1では、追加するtarget="_blank"だけでうまくいくようです。
mscrivo

7
このコメントに注意してください。使用rel='noopener noreferrer'あなたが使用している場合target="_blank"
ガスパル

ありがとうございました!target="_blank"私のために働いた:)react-router 5.0.1
RachitMagon19年

34

次のオプションを使用できます。-

 // 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">

3つのオプションのいずれかを使用して、reactルーティングによって新しいタブで開くことができます。


一部のiPhoneは「target = '_ blank'」を無視します。これらの電話では、これはまだ失敗するようです。
デボラ

3
についての注意target='_blank':タグに追加rel='noopener noreferrer'することをお勧めします<a>
BlunderingPhilosopher19年

19

ターゲットに「{}」を使用すると、jsxは泣きません

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



6

私の場合、別の関数を使用しています。

関数

 function openTab() {
    window.open('https://play.google.com/store/apps/details?id=com.drishya');
  }

  <Link onClick={openTab}></Link>

4

簡単な方法は、 'to'プロパティを使用することです。

<Link to="chart" target="_blank" to="http://link2external.page.com" >Test</Link>


2

新しいタブでURLを開くには、次のようにLinkタグを使用できます。

<Link to="/yourRoute" target="_blank">
    Open YourRoute in a new tab
</Link>

それの素敵なことを心に留めておくべき<Link>要素がに翻訳さ<a>要素、およびごとのように、ドキュメント・ルータ-DOMを反応させ、あなたがなどのタイトル、ID、クラス名、あなたがそれになりたいすべての小道具を渡すことができます


0

react-routerを使用している場合、target = "_blank"は新しいタブで開くのに十分です

例:<Link to={/ admin / posts / error-post-list / $ {this.props.errorDate}} target="_blank"> View Details </Link>

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.