React Routerでデフォルトルートを別のルートに変更する3つの方法とは?
React Router でデフォルトルートを別のルートに設定する方法
React Router は、React アプリケーションでルーティングを管理するためのライブラリです。デフォルトルートは、ブラウザアドレスバーに何も入力されていない場合に表示されるルートです。このチュートリアルでは、React Router でデフォルトルートを別のルートに設定する方法を説明します。
手順
react-router-dom
パッケージをインストールします。
npm install react-router-dom
App.js
ファイルを作成し、以下のコードを追加します。
import React from 'react';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
const Home = () => {
return <h1>Home</h1>;
};
const About = () => {
return <h1>About</h1>;
};
const App = () => {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<About />} />
<Route path="/home" element={<Home />} />
</Routes>
</BrowserRouter>
);
};
export default App;
このコードでは、BrowserRouter
コンポーネントを使用して、React Router を初期化しています。Routes
コンポーネントは、すべてのルートを定義します。Route
コンポーネントは、特定のパスに表示されるコンポーネントを定義します。
説明
Route
コンポーネントの path
プロパティは、そのルートの URL を定義します。デフォルトルートを設定するには、path
プロパティに空文字列 (""
) を指定します。この場合、ブラウザアドレスバーに何も入力されていない場合、そのルートが表示されます。
デフォルトルートを設定する方法は他にもあります。
Switch
コンポーネントを使用する:Switch
コンポーネントは、最初に一致するルートのみをレンダリングします。デフォルトルートを設定するには、Switch
コンポーネント内の最初のRoute
コンポーネントに空文字列 (""
) をpath
プロパティとして指定します。useHistory
フックを使用する:useHistory
フックを使用して、デフォルトルートにプログラムでリダイレクトできます。
React Router でデフォルトルートを別のルートに設定するには、いくつかの方法があります。このチュートリアルでは、Route
コンポーネントの path
プロパティを使用してデフォルトルートを設定する方法を説明しました。
import React from 'react';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
const Home = () => {
return <h1>Home</h1>;
};
const About = () => {
return <h1>About</h1>;
};
const App = () => {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<About />} />
<Route path="/home" element={<Home />} />
</Routes>
</BrowserRouter>
);
};
export default App;
このコードでは、以下の操作が行われています。
App
コンポーネントを定義します。BrowserRouter
コンポーネントを使用して、React Router を初期化します。Routes
コンポーネントを使用して、すべてのルートを定義します。
このコードでは、"/"
パスがデフォルトルートに設定されています。つまり、ブラウザアドレスバーに何も入力されていない場合、About
コンポーネントが表示されます。
以下のコードは、Switch
コンポーネントを使用してデフォルトルートを設定する方法を示しています。
import React from 'react';
import { BrowserRouter, Switch, Route } from 'react-router-dom';
const Home = () => {
return <h1>Home</h1>;
};
const About = () => {
return <h1>About</h1>;
};
const App = () => {
return (
<BrowserRouter>
<Switch>
<Route path="/home" element={<Home />} />
<Route path="/" element={<About />} />
</Switch>
</BrowserRouter>
);
};
export default App;
このコードでは、Switch
コンポーネントを使用して、最初に一致するルートのみをレンダリングするように設定されています。"/"
パスが Switch
コンポーネント内の最初の Route
コンポーネントであるため、ブラウザアドレスバーに何も入力されていない場合、About
コンポーネントが表示されます。
以下のコードは、useHistory
フックを使用してデフォルトルートにプログラムでリダイレクトする方法を示しています。
import React from 'react';
import { BrowserRouter, Routes, Route, useHistory } from 'react-router-dom';
const Home = () => {
return <h1>Home</h1>;
};
const About = () => {
return <h1>About</h1>;
};
const App = () => {
const history = useHistory();
useEffect(() => {
history.replace('/home');
}, []);
return (
<BrowserRouter>
<Routes>
<Route path="/home" element={<Home />} />
<Route path="/" element={<About />} />
</Routes>
</BrowserRouter>
);
};
export default App;
このコードでは、useEffect
フックを使用して、history.replace('/home')
を呼び出しています。これにより、ブラウザが http://localhost:3000
にアクセスしたときに、"/home"
パスにプログラムでリダイレクトされます。
これらのコード例は、React Router でデフォルトルートを別のルートに設定する方法を示すほんの一例です。ニーズに合わせて、さまざまな方法を組み合わせて使用できます。
React Router でデフォルトルートを別のルートに設定するその他の方法
nested routes を使用する
ネストされたルートを使用すると、より柔軟なルーティング構造を作成できます。デフォルトルートをネストされたルートとして設定するには、以下の手順を実行します。
- 親ルートと子ルートを定義します。
- 親ルートの
path
プロパティに空文字列 (""
) を指定します。 - 子ルートの
path
プロパティに、デフォルトで表示するコンポーネントのパスを指定します。
import React from 'react';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
const Home = () => {
return <h1>Home</h1>;
};
const About = () => {
return <h1>About</h1>;
};
const App = () => {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</BrowserRouter>
);
};
export default App;
index
プロパティを使用すると、特定のルートをデフォルトルートとして設定できます。デフォルトルートを設定するには、以下の手順を実行します。
- デフォルトルートとして設定するルートの
index
プロパティをtrue
に設定します。
import React from 'react';
import { BrowserRouter, Routes, Route } from 'react-router-dom';
const Home = () => {
return <h1>Home</h1>;
};
const About = () => {
return <h1>About</h1>;
};
const App = () => {
return (
<BrowserRouter>
<Routes>
<Route path="/about" element={<About />} />
<Route path="/" element={<Home />} index />
</Routes>
</BrowserRouter>
);
};
export default App;
Redirect
コンポーネントを使用すると、別のルートにリダイレクトできます。デフォルトルートを別のルートにリダイレクトするには、以下の手順を実行します。
- デフォルトルートとして設定するルートに
Redirect
コンポーネントを配置します。 Redirect
コンポーネントのto
プロパティに、リダイレクト先のパスを指定します。
import React from 'react';
import { BrowserRouter, Routes, Route, Redirect } from 'react-router-dom';
const Home = () => {
return <h1>Home</h1>;
};
const About = () => {
return <h1>About</h1>;
};
const App = () => {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={<Redirect to="/home" />} />
<Route path="/home" element={<Home />} />
<Route path="/about" element={<About />} />
</Routes>
</BrowserRouter>
);
};
export default App;
このコードでは、"/"
パスの Route
コンポーネント内に Redirect
コンポーネントが配置されています。Redirect
コンポーネントの to
プロパティは "/home"
に設定されているため、ブラウザアドレスバーに何も入力されていない場合、"/home"
パスにリダイレクトされます。
javascript routes reactjs