0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

🚀 React入門チュートリアル

Reactとは?

Reactの全体イメージ

ReactはUI(画面)を「コンポーネント」と呼ばれる小さな部品の組み合わせで作るJavaScriptライブラリです。

Reactの基本概念

  • 宣言的UI
    状態(state)をもとに「こうなってほしい画面」を宣言的に書きます。状態が変わるたびにReactが自動でUIを最新に保ちます。

  • コンポーネント指向
    画面を小さな部品(関数)に分割して再利用可能にします。

  • 一方向データフロー
    データが「親 → 子」へ一方向に流れることで、バグが起きにくい構造になっています。

最低限これだけ覚えておけばOK

  • Reactは「状態」と「UI」を自動的に結びつける
  • 小さな関数(コンポーネント)を組み合わせて画面を作る
  • 関数コンポーネントとHooks(useStateなど)が現在の標準

環境構築

# 任意のフォルダで
npx create-react-app my-react-tutorial
cd my-react-tutorial
npm start

最初のコンポーネント

import React from "react";

function App() {
  return (
    <div>
      <h1>こんにちは、React!</h1>
      <p>Reactの世界へようこそ。</p>
    </div>
  );
}

export default App;

状態管理(useState)

import React, { useState } from "react";

function App() {
  const [count, setCount] = useState(0);

  return (
    <div>
      <h1>カウンター</h1>
      <p>現在の値: {count}</p>
      <button onClick={() => setCount(count + 1)}>+1</button>
      <button onClick={() => setCount(count - 1)}>−1</button>
    </div>
  );
}

export default App;

イベント処理

  • onClick などのイベントはタグに直接関数を渡す

リスト表示

import React, { useState } from "react";

function App() {
  const [tasks, setTasks] = useState([
    { id: 1, text: "Reactの勉強" },
    { id: 2, text: "昼ご飯を食べる" },
    { id: 3, text: "コーディング" },
  ]);

  return (
    <div>
      <h1>今日のタスク</h1>
      <ul>
        {tasks.map((task) => (
          <li key={task.id}>{task.text}</li>
        ))}
      </ul>
    </div>
  );
}

export default App;

入力フォームの追加

import React, { useState } from "react";

function App() {
  const [tasks, setTasks] = useState([]);
  const [input, setInput] = useState("");

  const addTask = () => {
    if (input.trim() === "") return;
    setTasks([...tasks, { id: Date.now(), text: input }]);
    setInput("");
  };

  return (
    <div>
      <h1>ToDoリスト</h1>
      <input
        value={input}
        onChange={(e) => setInput(e.target.value)}
        placeholder="新しいタスクを入力"
      />
      <button onClick={addTask}>追加</button>
      <ul>
        {tasks.map((task) => (
          <li key={task.id}>{task.text}</li>
        ))}
      </ul>
    </div>
  );
}

export default App;

コンポーネント分割例

// App.js
import TaskList from "./components/TaskList";

function App() {
  return (
    <div>
      <h1>ToDoリスト</h1>
      <TaskList />
    </div>
  );
}

export default App;
// components/TaskList.js
import TaskItem from "./TaskItem";

function TaskList() {
  const tasks = [
    { id: 1, text: "牛乳を買う" },
    { id: 2, text: "宿題をする" },
  ];
  return (
    <ul>
      {tasks.map((task) => (
        <TaskItem key={task.id} text={task.text} />
      ))}
    </ul>
  );
}

export default TaskList;
// components/TaskItem.js
function TaskItem({ text }) {
  return <li>{teli>;
}

export default TaskItem;

関数コンポーネントとクラスベースコンポーネントの違い

特徴 関数コンポーネント クラスベースコンポーネント
記述方法 関数 クラス
状態管理 useState等のフック this.state / this.setState
ライフサイクル useEffectフック componentDidMount等
props参照 引数props this.props
推奨度 ◎推奨 △特殊用途

これでReactの基本を抑えましょう!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?