React

自分のノート。useEffect を置くかどうかの判断は公式ドキュメント側に切り出してある (Effect を置かない判断)。

Reactの基本概念

概念説明
コンポーネントUIを構成する部品。関数コンポーネントが主流
JSXJavaScript内でHTMLライクな記述をする構文
状態管理useState を使ってコンポーネントの状態を管理
イベント処理onClick などでユーザーの操作をハンドリング
副作用処理useEffectReact の外にある仕組みと同期させるためのもの。API 通信には使わない
コンポーネント間通信props を使ってデータを親から子へ渡す

基本的なコード例

🔹 1. コンポーネントの作成

Reactではコンポーネントを作成してUIを構築します。

function Greeting() {
  return <h1>こんにちは、React!</h1>;
}
 
export default Greeting;

🔹 2. 状態管理 (useState)

useState を使って、カウンターを作成する例。

import { useState } from "react";
 
function Counter() {
  const [count, setCount] = useState(0);
 
  return (
    <div>
      <h1>カウント: {count}</h1>
      <button onClick={() => setCount(count + 1)}>増やす</button>
    </div>
  );
}
 
export default Counter;

🔹 3. 副作用処理 (useEffect)

この例は、いまの React 公式の推奨とは違う。 2026-08-31 に react.dev を取得して確認した。下記「useEffect でデータを取得しない」を先に読む。

APIからデータを取得して表示する。

import { useState, useEffect } from "react";
 
function FetchData() {
  const [data, setData] = useState([]);
 
  useEffect(() => {
    fetch("https://jsonplaceholder.typicode.com/posts")
      .then((res) => res.json())
      .then((json) => setData(json.slice(0, 5)));
  }, []);
 
  return (
    <div>
      <h2>データ一覧</h2>
      <ul>
        {data.map((item) => (
          <li key={item.id}>{item.title}</li>
        ))}
      </ul>
    </div>
  );
}
 
export default FetchData;

🔹 4. コンポーネント間のデータ受け渡し (props)

親コンポーネントから子コンポーネントにデータを渡す。

function Child({ message }) {
  return <h2>子コンポーネント: {message}</h2>;
}
 
function Parent() {
  return (
    <div>
      <h1>親コンポーネント</h1>
      <Child message="こんにちは!" />
    </div>
  );
}
 
export default Parent;

🔹 5. グローバル状態管理 (useContext)

テーマをアプリ全体で共有する。

import { createContext, useContext, useState } from "react";
 
const ThemeContext = createContext();
 
function ThemeProvider({ children }) {
  const [theme, setTheme] = useState("light");
 
  return (
    <ThemeContext.Provider value={{ theme, setTheme }}>
      {children}
    </ThemeContext.Provider>
  );
}
 
function ThemedButton() {
  const { theme, setTheme } = useContext(ThemeContext);
 
  return (
    <button
      style={{
        background: theme === "light" ? "#fff" : "#333",
        color: theme === "light" ? "#000" : "#fff",
      }}
      onClick={() => setTheme(theme === "light" ? "dark" : "light")}
    >
      {theme === "light" ? "ダークモードにする" : "ライトモードにする"}
    </button>
  );
}
 
function App() {
  return (
    <ThemeProvider>
      <h1>テーマ切り替え</h1>
      <ThemedButton />
    </ThemeProvider>
  );
}
 
export default App;

🔹 6. ルーティング (React Router)

ページ遷移を実装する。

import { BrowserRouter as Router, Routes, Route, Link } from "react-router-dom";
 
function Home() {
  return <h1>ホームページ</h1>;
}
 
function About() {
  return <h1>このサイトについて</h1>;
}
 
function App() {
  return (
    <Router>
      <nav>
        <Link to="/">ホーム</Link> | <Link to="/about">このサイトについて</Link>
      </nav>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/about" element={<About />} />
      </Routes>
    </Router>
  );
}
 
export default App;

Reactの基本フック一覧

フック名用途
useState状態管理(コンポーネント内)
useEffect副作用の処理(データ取得・DOM操作)
useContextグローバルな状態管理
useReduceruseState よりも複雑な状態管理
useRefDOM要素や値の参照
useMemo計算結果をキャッシュしてパフォーマンス最適化
useCallback関数のメモ化

関連