React-Native 생명주기

SongNoin·2022년 1월 11일
0

React-Native

목록 보기
1/1
post-thumbnail

컴포넌트 생명주기 (LIfe-cycle)

constructor (생성자)

constructor 메서드는 클래스의 인스턴스 객체를 생성하고 초기화하는 특별한 메서드

  • 인스턴스(instance) : 메모리에 저장되는 객체의 실체에 초점을 맞춘 용어
    • 하나의 클래스를 가지고 여러가지의 인스턴스를 생성 가능
    • 각각 만들어진 인스턴스들은 개별적인 요소 (예: 색깔)를 갖지만, 공통된 클래스를 가졌다는점에서 여러가지들을 공유 가능
  • constructor : 함수 선언문, 함수 표현식, 클래스 (클래스도 함수)
  • non-constructor : 메써드(ES6 메서드 축약 표현), 화살표 함수
  • super : 함수처럼 호출할수도 있고 this와 같이 식별자 처럼 참조할 수 있는 특수한 키워드다.
    • super를 호출하면 수퍼클래스(부모)의 constructor를 호출
    • super를 참조하면 수퍼클래스(부모)의 메서드를 호출 가능
  • 프로젝트에서 사용법
    • 메서드를 바인딩하거나 state를 초기화하는 작업이 없다면, constructor 가 없어도 된다.
    • 내부에서 setState()를 호출하면 안된다. 컴포넌트에 지역 state가 필요하다면 생성자 내에서 this.state에 초기 state 값을 할당하면 된다.

componentDidMount

  • 컴포넌트가 마운트된 직후(처음 나타났을 때), 호출되는 곳
  • 외부 데이터를 불러와야한다면, 네트워크 요청을 보내기 적절한 위치
  • setState()를 즉시 호출할 수 도 있지만 , 조건문으로 감싸지 않으면 무한반복이 발생할 수 있다.

componentDidUpdate

  • 컴포넌트가 업데이트할 때
  • 속성값이 부모컴포넌트로부터 들어왔을 때
  • setState() 가 호출되어 상태값이 변경될때
  • forceUpdate()로 강제업데이트 시켰을때

componentWillUnmount

  • 컴포넌트가 마운트 해제되어 제거되기 직전에 호출
  • 이후 컴포넌트는 다시 랜더링되지 않으므로, componentWillUnmount() 내에서 setState()를 호출하면 안된다. 컴포넌트 인스턴스가 마운트 해제되고 나면, 절대로 다시 마운트되지 않음
  • componentDidMount에서 구독한 매써드들을 해제 가능
  • RN에서 componentWillUnmount() 을 사용하는 이유는 웹처럼 컴포넌트가 변경되는 것이 아닌 Stack이 쌓이기 때문에 뒤로 돌아가기를 했을때 전에 렌더링 됐던 상태로 그대로 있는다. 그래서 Stack으로 쌓일때 최초의 상태로 만들기 위해 componentWillUnmount() 를 사용
    • ex) 내 정보 수정하고 나와서 내 프로필을 보는 경우

0개의 댓글