카테고리 없음
리액트 생명주기 - React class life-cycle method & control
meta-tony
2023. 4. 8. 21:49
일반적인 React life-cycle
주요 life-cycle method()
method | 설명 |
constructor() | 마운트 되기 전 실행 |
render() | class component에 필수 메소드이며, 브라우저와 상호작용하지 않음 |
componentDidMount() | 마운트 렌더가 완료되었을 때 |
componentDidUpdate() | 업데이트 렌더가 완료되었을 때 |
componentWillUnmount() | DOM에서 제거될 때 |
- 주의점: Update 메소드에서 state나 props를 변경하면 다시 업데이트가 진행되면서 무한 루프가 적용되므로 사용하면 안된다.
코드 예시
import React, { Component } from 'react'
var classStyle = 'color:red';
class ClassComp extends React.Component {
state = {
number:this.props.initNumber,
date:(new Date()).toString()
}
UNSAFE_componentWillMount(){
console.log('%cclass => componentWillMount', classStyle)
}
componentDidMount(){
console.log('%cclass => conponentDidMount', classStyle)
}
shouldComponentUpdate(nextProps, nextState){
console.log('%cclass => shouldComponentUpdate', classStyle)
return true
}
UNSAFE_componentWillUpdate(nextProps, nextState){
console.log('%cclass => componentWillUpdate', classStyle)
}
componentDidUpdate(nextProps, nextState) {
console.log("%cclass => componentWillUnmount", classStyle)
}
conponentWillUnmount(){
console.log("%cclass => componentWillUnmount", classStyle)
}
render() {
console.log('%cclass => render', classStyle)
return(
<div className="container">
<h2>class style Component</h2>
<p>Number: {this.state.number}</p>
<p>Time : {this.state.date}</p>
<input type="button" value="random" onClick={function(){
this.setState({number:Math.random()})
}.bind(this)}/>
<input type="button" value="date" onClick={function(){
this.setState({date: (new Date()).toString()})
}.bind(this)}/>
</div>
)
}
}
export default ClassComp;
상세 순서
Mount Method (DOM 상에 삽입될 때에 순서대로 호출) |
constructor() |
static getDerivedStateFromProps() |
UNSAFE_componentWillMount() |
render() |
componentDidMount() |
Update Method(props, state 변경되면 순서대로 호출) |
static getDerivedStateFromProps() |
shouldComponentUpdate() |
UNSAFE_componentWillUpdate() |
render() |
getSnapshotBeforeUpdate() |
componentDidCatch() |
마운트 해제(DOM에서 제거될 때 호출) |
componentWillUnmount() |
오류 처리(오류 발생시 호출) |
static getDerivedStateFromError() |
componentDidCatch() |
참초
life-cycle photo - https://www.wikitechy.com/tutorials/react/reactjs-component-life-cycle
학습영상 생활코딩 - https://www.youtube.com/playlist?list=PLuHgQVnccGMCEfBwnNGsJCQDiqSWI-edj
생명주기 메소드 - https://ko.reactjs.org/docs/react-component.html#commonly-used-lifecycle-methods