Udemy-React-Course
  • Introduction
  • CodeSandbox で作る開発環境
    • CodeSandbox を使う利点
    • GitHub との連携
    • CodeSandbox の構造
  • 初めての React App
    • 最小限の React アプリケーションの実装
    • JSX と React Element
    • ES2015 のアロー関数について
    • React でアロー関数を使用する
    • 初めての React Component
    • ES2015 の import / export
    • export default
    • 2章の復習
  • State を持ったコンポーネント
    • State とは何か
    • ES2015 の class
    • React Class Component の書き方
    • click された時に setState で state を変更する
    • H20 Component 1
    • H20 Component 2
    • H20 Component 3
    • H20 Component 4
    • map と filter
    • map と filter の実践
  • 実践:TodoApp の作成
    • TodoApp の作成
  • 非同期処理, Promise, Ajax
    • HTTP プロトコルと AJAX
    • 非同期処理と Promise
    • JSON を取得し、その内容をレンダリングする React App の作成
  • 実践:API を叩く App
    • Giphy API を使用して、GIF画像検索する React App の作成
  • Redux の導入
    • Redux の概要
    • createStore で store を作る
    • Provider と Connect / store を React で使用する
    • Redux の全体像の確認
    • Presentational Component と Container Component
    • Action Creator
    • Combine Reducer
  • Redux-thunk を用いた非同期処理
    • Redux-thunk で非同期にアクションを発行する
    • Promise を Redux-thunk 上で活用する
  • React + Redux + Redux を用いた Giphy App
    • store を作る
    • Component に store を connect する
    • Search コンポーネントの作成
    • GiphyAPI を叩くメソッドの作成と Redux-thunk を使った非同期処理
    • 改善
  • 補足資料
    • App = ({name}) => name 型のシンタックス / Destructuring assignment
    • Class Component と Functional Component の使いわけ
  • 参考資料と謝辞
Powered by GitBook
On this page
  • 一般的に Component とは
  • React における Component
  • Input を受けつける
  • ({}) タイプの引数の受け取り方
  • コード全体像
  1. 初めての React App

初めての React Component

PreviousReact でアロー関数を使用するNextES2015 の import / export

Last updated 7 years ago

一般的に Component とは

Component とは、input (入力) を受け取って、それを元に Operation (なんらかの操作) をした結果を、Output (出力) する部品のこと。

これを組み合わせて、より大きなアプリケーションを構築する。

React における Component

React におけるコンポーネントは、基本的には React Element を返す単なる Function です。ただし、ファンクションとは異なるのは、名前の冒頭が大文字でなければいけないことと、使用する際には <Component /> とカスタムタグのように記述することです。

// 単なる関数
const returnReactElement = () => {
  return <h2>name</h2>;
};

// 関数なので以下のように実行して使う
// returnReactElement()

// React Component にするには、
// 全く同じ内容のまま、冒頭を大文字にする
const ReturnReactElement = props => {
  return (
    <h2>
      {props.name} {props.music}
    </h2>
  );
};

// Component なので以下のようにタグを記述して使う
// 閉じタグを忘れないように
// <ReturnReactElement />

Input を受けつける

ただし、単に React Element を返すだけでは、広義の Component とはいえませんし、あまり便利ではありません。では Input を受け取って、それを元に Output する Component を作成してみましょう。

Component に入力される値は、<ReturnReactElement name="nakanishi" music="jazz" /> のように、attribute と同じ形で渡します。

render(
  <ReturnReactElement name="nakanishi" music="jazz" />,
  document.getElementById('root')
);

受け取った値は、コンポーネントの引数にオブジェクトとして入ってきます。

props = {
  name: 'nakanishi',
  music: 'jazz'
};

受け取った値は props.name のようにオブジェクトにアクセスして使用します。

import React from 'react'
import { render } from 'react-dom'

const ReturnReactElement = props => {
  return (
    <h2>
      {props.name} {props.music}
    </h2>
  );
};

render(
  <ReturnReactElement name="nakanishi" music="jazz" />,
  document.getElementById('root')
)

({}) タイプの引数の受け取り方

また、({name, music}) として引数を受け取ると、直接、name と music にオブジェクトが展開して代入されます。

name = 'nakanishi'
music = 'jazz'
const ReturnReactElement = ({ name, music }) => {
  return (
    <h2>
      {name} {music}
    </h2>
  );
};

コード全体像

import React from "react";
import { render } from "react-dom";

// 関数
const returnReactElement = () => {
  return <h2>name</h2>;
};

// React Component にするには、
// 全く同じ内容のまま、冒頭を大文字にする
const ReturnReactElement = props => {
  return (
    <h2>
      {props.name} {props.music}
    </h2>
  );
};

const ReturnReactElement2 = ({ name, music }) => {
  return (
    <h2>
      {name} {music}
    </h2>
  );
};

render(
  <ReturnReactElement2 name="nakanishi" music="jazz" />,
  document.getElementById("root")
);
参考コード