본문 바로가기
[FrontEnd]/React

React - State & Lifecycle

by 황원용 2023. 6. 2.
728x90

React에서의 State

  • 리액트 Component의 상태를 의미한다.
  • 상태가 좋은지 나쁜지의 의미가 아닌 리액트 Component의 변경 가능한 데이터를 의미한다.
  • state는 리액트 Component를 개발하는 개발자가 정의해서 사용한다.
  • 렌더링이나 데이터 흐름에 사용되는 값만 state에 포함시켜야 한다.
  • state가 변경될 경우 component가 리렌더링되기 때문에 렌더링과 데이터 흐름에 관련없는 값을 포함시키면 불필요하게 Component가 다시 렌더링되어 성능 저하의 원인이 되기 때문이다.
  • 렌더링과 데이터 흐름에 관련없는 값은 Component에 인스턴스 필드로 정의하면 된다. 
  • state는 자바스크립의 객체이다.

 

class LikeButton extends React.Component {
	constructor(props) {
    	super(props);
        
        this.state = { // Component의 state를 정의하는 부분
        	liked: false
        };
    }
    
    ...
}
  • 모든 클래스 Component에는 constructor라는 생성자 함수가 존재한다.
  • 이 생성자 함수는 클래스가 생성될 때 실행된다.
  • 클래스 Component의 경우 state를 생성자에서 정의한다.
  • 함수 Component는 state를 useState라는 hook을 사용해서 정의한다.
  • state는 정의된 이후 일반적인 자바스크립트 변수를 다루듯이 직접 수정하면 안된다.
  • 리액트의 state는 Component의 렌더링과 관련이 있기 때문에 직접 수정하게 되면 개발자의 의도와는 다르게 작동할 가능성이 있다.

 

//state를 직접 수정 (잘못된 사용법)
this.state = {
	name: 'INTP'
};

// setState 함수를 통한 수정 (장상적인 사용법)
this.setState({
	name: 'INTP'
});

 

 

Lifecycle

  • 리액트 Component 역시 생성부터 소멸까지의 생명주기를 가진다.
  • 생성(Mount) - 활동(Update) - 소멸(Unmount)
  • Component는 계속 존재하는 것이 아니라 시간의 흐름에 따라 생성되고 업데이트 되다가 사라진다.

 

 

 

참고

인프런 - 처음 만난 리액트

728x90

'[FrontEnd] > React' 카테고리의 다른 글

React - Custom Hook 만들기  (0) 2023.06.06
React - Hooks  (0) 2023.06.02
React - Components & Props  (0) 2023.06.02
React - Rendering Elements  (0) 2023.06.01
React - JSX  (0) 2023.06.01