LoginSignup
40
40

More than 5 years have passed since last update.

Reactのライフサイクル

Last updated at Posted at 2017-09-07

React v16.3

新しいライフサイクル関数が追加されました。

static getDerivedStateFromProps(nextProps, prevState) {
  /* 戻り値:処理後の新しいState、変更なければ、nullで返す */
  // v17からcomponentWillReceivePropsが削除されるので、基本同様な機能実現できます。
  // getDerivedStateFromPropsが初回描画も呼ばれます
}

getSnapshotBeforeUpdate(prevProps, prevState) {
  // DOMが変更される前に呼ばれます。
  // 戻り値はcomponentDidUpdateの三つ目パラメータとして渡されます。
}

UNSAFE_componentWillMount(){
  // v17からcomponentWillMountが削除されます
}

UNSAFE_componentWillReceiveProps() {
  // v17からcomponentWillReceivePropsが削除されます
}

UNSAFE_componentWillUpdate() {
  // v17からcomponentWillUpdateが削除されます
}

React v16.2 以前

getDefalutProps(){
  /* 全体で一度しか呼ばれない */
  /* インスタンス作成時に親コンポーネントが値を指定しなかった時だけ、ここの値が使用される */
  /* 戻り値:Propsのキーと初期値(バリュー) */
}

getInitialState(){
  /* インスタンス作成毎に呼ばれる */
  /* 描画前にコンポーネントの状態を変更する最後のチャンス */
  /* 戻り値:Stateのキーと初期値(バリュー) */
}

componentWillMount(){
  /* 初回の描画時にのみ呼び出される */
  /* コンポーネントがページに追加される直前に呼び出される */
  /* 引数も戻り値もなし */
}

/* 描画 */
render: function(){
  /* 戻り値:ReactのElement */
}

/* 描画後 */
componentDidMount(){
  /* 初回の描画完了後に呼ばれる */
  /* ここではじめて実際のDOMの操作が出来る(React.findDOMNode(this)) */
}

/* 再描画前 */
componentWillReceiveProps(nextProps) {
  /* 引数 : 親から送られた値(props) */
  /* 親コンポーネントのstate等が変更されて、再描画が発生する際に呼ばれる */
  /* ただしこの時点ではthis.propsは変わっていない */
}

/* 再描画キャンセル */
shouldComponentUpdate(nextProps, nextState) {
  /* falseを返すと、componentWillUpdateとcomponentDidUpdateとrenderをskipする */
  /* propsやstateが変わっても描画内容に変更がないとわかるときにパフォーマンスを早くするために使用 */
}

componentWillUpdate(nextProps, nextState){
  /* propsとstateの更新による再描画が行われる直前に呼び出される */
  /* stateやpropsは変更できない */
}

/* 再描画後 */
componentDidUpdate(prevProps, prevState){
  /* 再描画後に実際のDOMにアクセスするためのメソッド */
}

/* コンポーネント破棄時 */
componentWillUnmount() {
  /* コンポーネント削除時に呼び出される */
}
40
40
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
40
40