React RouterでuseNavigate Hookを使う方法
React-Routerでリンクを新しいタブで開く方法
target="_blank" 属性を使う
これは最も簡単な方法です。Link
コンポーネントに target="_blank"
属性を追加するだけです。
<Link to="/new-page" target="_blank">新しいページを開く</Link>
onClick
イベントを使って、window.open()
メソッドを呼び出すことができます。
const openNewTab = (url) => {
window.open(url, "_blank");
};
<Link to="/new-page" onClick={openNewTab}>新しいページを開く</Link>
react-router-dom
の useNavigate
Hookを使って、新しいタブでリンクを開くことができます。
import { useNavigate } from "react-router-dom";
const App = () => {
const navigate = useNavigate();
const handleClick = () => {
navigate("/new-page", { target: "_blank" });
};
return (
<div>
<button onClick={handleClick}>新しいページを開く</button>
</div>
);
};
カスタムコンポーネントを使う
上記の方法以外にも、カスタムコンポーネントを使って、新しいタブでリンクを開くことができます。
const NewTabLink = ({ to }) => {
return (
<a href={to} target="_blank">
{to}
</a>
);
};
<NewTabLink to="/new-page">新しいページを開く</NewTabLink>
注意:
target="_blank"
属性を使う場合、ユーザーがポップアップブロック機能を有効にしている場合は、新しいタブが開かない可能性があります。window.open()
メソッドを使う場合、ブラウザによってはセキュリティ警告が表示される可能性があります。
import React from "react";
import { Link } from "react-router-dom";
const App = () => {
return (
<div>
{/* target="_blank" 属性を使う */}
<Link to="/new-page" target="_blank">新しいページを開く (target="_blank")</Link>
{/* onClick イベントを使う */}
<a href="/new-page" onClick={(e) => { e.preventDefault(); window.open("/new-page", "_blank"); }}>新しいページを開く (onClick)</a>
{/* react-router-dom の useNavigate Hookを使う */}
import { useNavigate } from "react-router-dom";
const App = () => {
const navigate = useNavigate();
const handleClick = () => {
navigate("/new-page", { target: "_blank" });
};
return (
<div>
<button onClick={handleClick}>新しいページを開く (useNavigate)</button>
</div>
);
};
{/* カスタムコンポーネントを使う */}
const NewTabLink = ({ to }) => {
return (
<a href={to} target="_blank">
{to}
</a>
);
};
<NewTabLink to="/new-page">新しいページを開く (カスタムコンポーネント)</NewTabLink>
</div>
);
};
export default App;
このコードをコピーして、あなたのプロジェクトで試してみてください。
React-Routerでリンクを新しいタブで開くその他の方法
react-router-dom
の NavLink
コンポーネントは、activeClassName
プロパティを使って、現在のページと一致するリンクにスタイルを適用することができます。このプロパティを使って、新しいタブで開くリンクにスタイルを適用することもできます。
import { NavLink } from "react-router-dom";
<NavLink to="/new-page" activeClassName="new-tab">新しいページを開く</NavLink>
react-router-tabs
ライブラリを使うと、タブ付きのインターフェースを簡単に作成することができます。このライブラリには、新しいタブでリンクを開く機能も含まれています。
import { Tabs, Tab } from "react-router-tabs";
<Tabs>
<Tab to="/home">Home</Tab>
<Tab to="/new-page" target="_blank">新しいページを開く</Tab>
</Tabs>
react-bootstrap
ライブラリには、Nav
コンポーネントが含まれています。このコンポーネントを使って、タブ付きのインターフェースを簡単に作成することができます。
import { Nav, NavItem } from "react-bootstrap";
<Nav>
<NavItem href="/home">Home</NavItem>
<NavItem href="/new-page" target="_blank">新しいページを開く</NavItem>
</Nav>
これらの方法は、上記の方法よりも複雑ですが、より多くの機能を提供することができます。
reactjs react-router