画面遷移を実装しよう
📄 ファイルを追加しよう
このレッスンでは、ナビゲーションバーの作成と画面遷移の実装を行います。 以下のようなファイル構造になるよう、ディレクトリとファイルを追加しましょう。
frontend/
├─ __mocks__/
├─ assets/
│ ├─ css/
│ ├─ img/
│ └─ js/
+ │ ├─ components/
+ │ │ ├─ NavBar.js
│ ├─ near/
+ │ └─ pages/
+ │ ├─ GuestBookedList.js
+ │ ├─ Home.js
+ │ ├─ ManageBookings.js
+ │ ├─ ManageRooms.js
+ │ └─ Search.js
├─ App.js
├─ index.html
└─ index.js
📁 ライブラリをインストールしよう
ナビゲーションバーを作成するためのフレームワークと、画面遷移を実行するためのライブラリを以下のコマンドでインストールします。
yarn add --dev react-bootstrap bootstrap bootstrap-icons react-router-dom
🖥 画面遷移を実装しよう
まずは、frontend/index.jsを以下のように書き換えます。
frontend/index.js
import "bootstrap";
import "bootstrap-icons/font/bootstrap-icons.css";
import "bootstrap/dist/css/bootstrap.min.css";
import { createRoot } from "react-dom/client";
import { BrowserRouter } from "react-router-dom";
import App from "./App";
import { initContract } from "./assets/js/near/utils";
const container = document.querySelector("#root");
const root = createRoot(container);
window.nearInitPromise = initContract()
.then(() => {
<BrowserRouter>
<App />
</BrowserRouter>;
root.render(<App tab="home" />);
})
.catch(console.error);
画面遷移を実行するためのライブラリと、フレームワークをインポートしています。
import "bootstrap";
import "bootstrap-icons/font/bootstrap-icons.css";
import "bootstrap/dist/css/bootstrap.min.css";
import { createRoot } from "react-dom/client";
import { BrowserRouter } from "react-router-dom";
次に、frontend/App.jsを以下のように書き換えます。
frontend/App.js
import { BrowserRouter, Route, Routes } from "react-router-dom";
import NavBar from "./assets/js/components/NavBar";
import GuestBookedList from "./assets/js/pages/GuestBookedList";
import Home from "./assets/js/pages/Home";
import ManageBookings from "./assets/js/pages/ManageBookings";
import ManageRooms from "./assets/js/pages/ManageRooms";
import Search from "./assets/js/pages/Search";
const App = () => {
return (
<BrowserRouter>
<NavBar />
<Routes>
<Route path="/" element={<Home />} />
<Route path="/search/:date" element={<Search />} />
<Route path="/booked-list" element={<GuestBookedList />} />
<Route path="/manage-rooms" element={<ManageRooms />} />
<Route path="/manage-bookings" element={<ManageBookings />} />
</Routes>
</BrowserRouter>
);
};
export default App;
return文の中で、ナビゲーションバーを実装する<NavBar />を呼び出しています。各ルートの設定の前に呼び出すことで、どのページに遷移しても必ずナビゲーションバーが表示されるようになります。
次に、画面遷移のための詳細な設定を行なっています。
遷移時に使用するデータを、pathとelementで設定します。
<Routes>
<Route path="/" element={<Home />} />
<Route path="/search/:date" element={<Search />} />
<Route path="/booked-list" element={<GuestBookedList />} />
<Route path="/manage-rooms" element={<ManageRooms />} />
<Route path="/manage-bookings" element={<ManageBookings />} />
</Routes>
例えば、Home画面は「http://localhost:1234/