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
  • Class Component を使う場合
  • Functional Component を使う場合
  • しかしメソッドが多い場合には Class Component の方が見通しは良い
  • props を元に render するだけのものは Functional Component にする方が良い
  • ただし最後は任意
  1. 補足資料

Class Component と Functional Component の使いわけ

Class Component と Functional Component、どちらを選択するのが良いのかという質問をいただきましたのでご回答させていただきます。

Class Component を使う場合

まず以下のような場合は、確実に Class Component を用いる必要があります。これらの機能は Functional Component には持たせることができないからです。

  • state を持たせる必要がある

  • Lifecycle method を使う必要がある(componentDidMount 等)

class Component extends React.Component {
    constructor(props){
        super(props)
        this.state = {name: ''}
    }
    
    componentDidMount() {...}
    
    calcurlate() {...}
    
    maltiply() {...}
    
    render() {...}
}

Functional Component を使う場合

反対に、こういったケース「以外」は全て Functional Component にすることができます。

  • Class Component にしなくてはいけない場合「以外」

しかしメソッドが多い場合には Class Component の方が見通しは良い

ただし、必ずしも全て Functional Component にしなくてはいけないということはありません。例えば「state を持たず、Lifecycle method も使用しない」が、メソッドは複数持つような場合です。こういった場合には Class を使って書いた方が見通しは良くなります。

class Component extends React.Component {
    constructor(props){
        super(props)
    }
    
    calcurlate() {...}
    
    maltiply() {...}
    
    render() {...}
}

props を元に render するだけのものは Functional Component にする方が良い

props を受け取って、それを元にレンダーするだけの Component であれば、Functional に書いた方が基本的に良いと思います。

const Component = ({title, day, imageUrl}) => {
    const alt = `${title} ${day}`
    return <img href={imageUrl} alt={alt}/>
}

ただし最後は任意

以上のような原則はありますが、最終的にはどちらを選択しても問題ありません。参考になれば幸いです。

PreviousApp = ({name}) => name 型のシンタックス / Destructuring assignmentNext参考資料と謝辞

Last updated 7 years ago