ライフサイクルのリカバリ
リファレンス
反応ライフサイクルとは?
反応器は素子ベースのビューを中心としたライブラリである.したがって、各構成部品には、1つのライフサイクル、すなわち構成部品のライフサイクルが存在する.コンポーネントの寿命は、通常、ページレンダリングの準備中に開始され、ページが消えたときに終了します.
ライフサイクル分類
ライフサイクルは上の図のように9つ存在します.
そして3つのタイプに分けることができます.
更新セクションに注意してください.更新は次の4つの場合に発生します.
ライフサイクルメソッド
1. constructor
コンストラクション関数(コンストラクション関数)はjavaと同様に、構成部品の作成時に初めて実行されます.この方法では、初期状態を決定できます.
// class
class Example extends React.Component {
constructor(props) {
super(props)
this.state = { count: 0 };
}
//Hooks
const Example = () => {
const [count, setCount] = useState(0);
}
2. shouldComponentUpdate
この方法はpropsまたはstateを変更するときに、再レンダリングするかどうかを決定する方法です.このメソッドはtrueまたはfalseを返さなければなりません.
この方法はパフォーマンスの最適化にのみ使用されます.レンダリングを防止するために使用すると、エラーが発生する可能性があります.
3.render
これは最も基礎的な方法であり、最も重要な方法でもある.これは、構成部品をレンダリングするために必要な唯一の必須方法です.関数型構成部品では、レンダーせずに構成部品をレンダーできます.
// Class
class Example extends React.Component {
render() {
return <div>컴포넌트</div>
}
}
// Hooks
const example = () => {
return <div>컴포넌트</div>
}
4.getSnapshotBeforeUpdate
このメソッドは、renderが生成した結果が実際にブラウザに反映される前に呼び出されます.
5.componentDidMount
この方法は、構成部品を作成し、最初のレンダリングが完了した後に実行されます.関数型Hooksでは、UseEffectを利用して次の機能を実現できます.
// Class
class Example extends React.Component {
componentDidMount() {
...
}
}
// Hooks
const Example = () => {
useEffect(() => {
...
}, []);
}
データのインポート、サブスクリプションの設定から、反応素子を手動で変更するDOMまで、これらはすべて副作用です.Reactionのclassライフサイクルメソッドに精通している場合は、UserEffect HookをコンポーネントDidMountとコンポーネントDidUpdate、コンポーネントWillUnmountの組合せと見なすことができます.
6. componentDidUpdate
これはレンダリングが完了した後に実行されます.更新終了後ですので、DOMに関する処理を行ってみてはいかがでしょうか.
// Class
class Example extends React.Component {
componentDidUpdate(prevProps, prevState) {
...
}
}
// Hooks
const Example = () => {
useEffect(() => {
...
});
}
7. componentWillUnmount
この方法はDOMから構成部品を削除するときに実行されます.ComponentDidMountにイベントが登録されている場合は、ここで削除操作を行う必要があります.この方法は、関数型要素において、userEffect CleanUp関数によって実現することができる.
// Class
class Example extends React.Component {
coomponentWillUnmount() {
...
}
}
// Hooks
const Example = () => {
useEffect(() => {
return () => {
...
}
}, []);
}
8. componentDidCatch
最後に、一番上の写真では見えませんが、componentDidCatchという方法があります.この方法では、コンポーネントレンダリング中にエラーが発生した場合に、アプリケーションがエラーUIを表示し続けることができます.
// Class
class Example extends React.Component {
componentDidCatch(error, info) {
console.log('에러가 발생했습니다.')
}
}
の最後の部分
これにより、反応器のすべてのライフサイクルが理解されます.最近使用されている関数型素子はクラス素子を用いるよりも多く,反応型素子を用いてライフサイクルを実現することが実務の核心となっている.しかし、まだ類素子で反応しているところもあるので、必ず知っておく必要があります.
Reference
この問題について(ライフサイクルのリカバリ), 我々は、より多くの情報をここで見つけました https://velog.io/@yunsungyang-omc/React-리엑트-라이프-사이클テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol