React Life Cycle
React Life Cycle
React Componentは、親コンポーネントから受け取ったpropsを入力とし、Reactを構成する最小単位Elementを出力とする関数です.
Reactを使用すると、ユーザーは画面に各コンポーネント単位でUIを表示し、他のUIに置き換え、現在表示されているUIを画面から削除できます.したがって、各コンポーネントにはライフサイクル(Life Cycle)があり、作成->更新->削除フェーズの順に実行されます.
マウント(作成)
新しいコンポーネントはいつ作成されますか?
コンポーネント関数を実行し、成果物の要素を仮想DOMに挿入し、実際のDOMを更新するプロセス.
import React, { Component } from 'react';
class Login extends Component{
}
constructor
最初は、コンポーネントがマウントされる前に実行されます.
this.state
宣言/初期化状態値class Login extends Component{
constructor(props){
super(props);
this.state = {
isLogin = true,
userInfo = null
};
this.handleBtnClick = this.handleBtnClick.bind(this);
}
}
コンストラクション関数を定義する際に注意すべき点は、次のとおりです.1.コンストラクション関数を使用する目的がない場合は、コードを記述する必要はありません.
2.コンストラクション関数を使用する場合は、super(props)を呼び出す必要があります.propsを定義します.エラーが発生する可能性があります.
3.コンストラクション関数の内部でsetStateなどの更新を実行しないでください.必要に応じてstateで定義できます.マウント前に更新するのは望ましくありません.
すなわち、マウント前にコンストラクション関数は、予め決定された状態を決定しなければならない.そうしないと、マウント後にsetStateを介して行わなければならない.
render
render()は、最終的にコンポーネントで動作する成果物を返す方法です.したがって、コンポーネントであれば、それが必要です.
render(){
return (
<div>
<header className="title">
Hanjun Blog
</header>
</div>
);
}
->成果物の要素が仮想DOMにマウントされ、実際のDOMに更新されます.render() {
const targetLists = lists.map((el, index) => {
return (
<button key={index} type="button">
{el}
</button>
);
});
return (
<>
{targetLists}
</>
);
}
render () {
return (
{isRight && <Logout />}
);
}
レンダリングの注意
componentDidMount
componentDidMount()は、構成部品の成果物がDOMにロードされた後に実行される方法である.
-ex)インストール後、モードやツールチップなどの寸法や位置を確認する必要がある場合
ただし、このような2回のレンダリング処理では、パフォーマンスに問題が発生する可能性があるため、注意が必要です.必要でない場合は、最初に実行されたコンストラクション関数(constructor)で設定します.
更新
ステータスまたはアイテムが変化すると、コンポーネントが更新され、再表示されます.
入力によって出力が異なります.また、親コンポーネントが更新されると、子コンポーネントも再マウントされます.
componentが更新されると、メソッドは次の順序で実行されます.
New Propss
親コンポーネントから更新されたpropsを受信する場合があります.更新propsを受信したコンポーネントが再レンダリングされ、更新サイクルが実行されます.
setState
コンポーネントはsetState()APIを共通に提供します.この方法では、現在のステータスを変更できます.setState()apiを使用すると、stateは更新サイクルを行います.
componentDidUpdate
componentDidUpdateは、更新完了とレンダリング完了後に実行する方法です.
初回マウント時には動作しません.
componentDidUpdate
は3つの因子を受け入れる.componentDidUpdate(prevProps, prevState, snapshot)
componentDidUpdate(preveProps){
if(this.props.Id !== prevProps.Id){
fetchData(this.props.Id);
}
}
componentDidUpdate(preveProps, prevState){
if(this.state.Id !== prevState.Id){
fetchData(this.props.Id);
}
}
setState > componentDidupdate > SetState ...
Unmount(削除)
対応するコンポーネントがDOMから削除されたときに実行されるlifeCycle.
componentWillUnmount
最終的にはクリアされる前に実行されます.コンポーネント内のネットワークリクエスト、タイマイベントなどの持続的なイベントを無効にします.
たとえばsetIntervalメソッドが実行され、オフにしないとグローバルにタイマに戻ります.したがって、クリアされる前に、これらを解除しなければならない.
Reference
この問題について(React Life Cycle), 我々は、より多くの情報をここで見つけました https://velog.io/@bey1548/React-Life-Cycleテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol