【React】タブ表示切替画面作りたい!1からパッケージを作って、簡単に作ってみるよ

以前タブ表示切替について記事をあげました

が、

部分的過ぎてわかりずらかったと思うので

改めて、一から作成する記事を書きました

ぜひ参考になればと思います!

さて、一から作っていきましょうか


1. 環境の準備

まず、create-react-appを使用してReactプロジェクトを作成します

npx create-react-app tab-switching-app
cd tab-switching-app

次に、react-router-domをインストールします

npm install react-router-dom@latest

package.jsonはこんな感じです
(すべて一緒ではないかもですが参考ください)

{
  "name": "tab-switching-app",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^5.17.0",
    "@testing-library/react": "^13.4.0",
    "@testing-library/user-event": "^13.5.0",
    "react": "^18.0.0",
    "react-dom": "^18.0.0",
    "react-router-dom": "^6.25.1",
    "react-scripts": "4.0.3",
    "web-vitals": "^2.1.4"
  },
  "scripts": {
    "start": "react-scripts --openssl-legacy-provider start",
    "build": "react-scripts --openssl-legacy-provider build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": [
      "react-app",
      "react-app/jest"
    ]
  },
  "browserslist": {
    "production": [
      ">0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}

2. コードの実装

public/index.htmlの実装

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>React Tab Switching App</title>
</head>
<body>
  <noscript>You need to enable JavaScript to run this app.</noscript>
  <div id="root"></div>
</body>
</html>

src/index.jsの実装

ReactDOM.createRootを使用して、アプリをレンダリングします

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>
);

reportWebVitals();

src/App.jsの実装

react-router-domのBrowserRouter, Routes, Route, Linkを使用して、タブ切り替えを実装します

import React from 'react';
import { BrowserRouter as Router, Routes, Route, Link } from 'react-router-dom';
import Home from './Home';
import About from './About';
import Contact from './Contact';

function App() {
  return (
    <Router>
      <div>
        <nav>
          <ul>
            <li>
              <Link to="/">Home</Link>
            </li>
            <li>
              <Link to="/about">About</Link>
            </li>
            <li>
              <Link to="/contact">Contact</Link>
            </li>
          </ul>
        </nav>

        <Routes>
          <Route path="/" element={<Home />} />
          <Route path="/about" element={<About />} />
          <Route path="/contact" element={<Contact />} />
        </Routes>
      </div>
    </Router>
  );
}

export default App;

そして、タブそれぞれの画面を実装します

src/Home.jsの実装

import React from 'react';

function Home() {
  return (
    <div>
      <h2>Home</h2>
      <p>Welcome to the home page!</p>
      <p>ホーム画面ですよ!</p>
    </div>
  );
}

export default Home;

src/About.jsの実装

import React from 'react';

function About() {
  return (
    <div>
      <h2>About</h2>
      <p>This is the about page.</p>
      <p>アバウト画面ですよ!</p>
    </div>
  );
}

export default About;

src/Contact.jsの実装

import React from 'react';

function Contact() {
  return (
    <div>
      <h2>Contact</h2>
      <p>This is the contact page.</p>
      <p>コンタクト画面ですよ!</p>
    </div>
  );
}

export default Contact;

3. アプリ起動!!

アプリ起動します!

npm start

こんな画面が表示されるでしょう!!



表示されましたかね。。。?

是非フォローしてください

最新の情報をお伝えします