Functional Componentの特徴
・ES6のアロー関数で記述する
・stateを持たない
(※2019.02.06に関数コンポーネントにステートを持たせられるAPIが出ている↓)
https://ja.reactjs.org/docs/hooks-state.html
・propsを引数に受け取る
・JSXをreturnする
(※主に使用されているのが、Functional Component)
Class Componentの特徴
・Classを宣言及びReact Componentを継承
・constructorで初期化、propsを引数に受け取る
・renderメソッド内で、JSXをreturnし、引数(props)を受け取るには、thisが必要
・ライフサイクルやStateを持つことができる
(※基本、使用するのはClass Componentではなく、Functional Componentを推奨)
Stateが肥大化した場合の管理の問題
① stateを多くの場所で使用する→Reduxのstoreで管理
② stateを特定の少数の場所で使用→Class Componentで管理
基本的には上記の軸として考えてみると良いかも。
Functional Componentのコード例
import React from 'react';
const Hoge = (props) => {
return (
<div>
<h1>{props.title}</h1>
</div>
);
};
Class Componentのコード例
import React from 'react';
Class Hoge extends from React.Component{
constructor(props){
super(props);
}
render(){
return(
<div>
<h1>{this.props.title}</h1>
</div>
);
}
}
いずれも、最後に
export
を記述し、
export 例)↓
export default Hoge;
さらに、index.js側で
import
import 例)↓
import Hoge from './Hoge';
ここは違う、ここはこうした方が? 等々ございましたら、ご指摘いただけますと幸いです。