React 구성 요소 및 수명 주기 방법에 대해 자세히 알아보겠습니다.
React 컴포넌트란?
React는 구성 요소 기반 아키텍처를 사용하여 사용자 인터페이스를 구축하는 프런트 엔드 개발 JavaScript 라이브러리입니다.
구성 요소는 사용자 인터페이스를 더 작은 단위로 분해하고 관리할 수 있는 독립적인 모듈입니다.
React에서 컴포넌트는 클래스나 함수로 작성할 수 있습니다.
클래스 구성 요소
클래스 구성 요소 반응 요소 클래스를 상속받아 생성됩니다.
이때, 만들다 방법을 구현해야 합니다.
import React from 'react';
class MyComponent extends React.Component {
render() {
return <div>Hello, World!
</div>;
}
}
export default MyComponent;
기능적인 부분
기능적 구성 요소는 기능을 사용하여 작성됩니다.
기능적 구성 요소는 상태를 가질 수 없지만 props를 인수로 받고 렌더링할 수 있습니다.
import React from 'react';
function MyComponent(props) {
return <div>Hello, {props.name}!
</div>;
}
export default MyComponent;
라이프사이클 메서드 응답
React 구성 요소에는 렌더링 전후에 특정 작업을 수행할 수 있는 수명 주기 메서드가 있습니다.
수명 주기 메서드는 각각 마운트, 업데이트 및 마운트 해제의 세 가지 범주로 나뉩니다.
집회
구성 요소가 만들어지고 DOM에 삽입되는 프로세스입니다.
건설자()
건설자() 메서드는 구성 요소가 생성될 때 호출되는 메서드입니다.
이 방법으로 모든 초기화를 수행할 수 있습니다.
import React from 'react';
class MyComponent extends React.Component {
constructor(props) {
super(props);
this.state = { count: 0 };
}
render() {
return <div>{this.state.count}</div>;
}
}
export default MyComponent;
정적 getDerivedStateFromProps()
정적 getDerivedStateFromProps() 메서드는 구성 요소가 생성될 때와 업데이트될 때 모두 호출되는 메서드입니다.
소품함께 사용 상태산술에 사용
import React from 'react';
class MyComponent extends React.Component {
static getDerivedStateFromProps(props, state) {
return { count: props.initialCount };
}
render() {
return <div>{this.state.count}</div>;
}
}
export default
만들다()
만들다() 메서드는 구성 요소가 렌더링될 때 호출되는 메서드입니다.
이 메서드는 화면에 표시할 JSX를 반환합니다.
import React from 'react';
class MyComponent extends React.Component {
render() {
return <div>Hello, World!
</div>;
}
}
export default MyComponent;
componentDidMount()
componentDidMount() 메소드는 컴포넌트가 생성되어 DOM에 삽입된 후에 호출되는 메소드입니다.
이 방법을 사용하면 네트워크 요청을 보내고, 이벤트 리스너를 등록하고, 외부 라이브러리를 초기화하는 등의 작업을 수행할 수 있습니다.
import React from 'react';
class MyComponent extends React.Component {
componentDidMount() {
// 네트워크 요청 등의 작업을 수행합니다.
}
render() {
return <div>Hello, World!
</div>;
}
}
export default MyComponent;
업데이트
구성 요소가 업데이트되는 프로세스입니다.
업데이트는 소품나 상태변경으로 인해 발생할 수 있습니다.
정적 getDerivedStateFromProps()
정적 getDerivedStateFromProps() 메서드는 구성 요소가 생성될 때와 업데이트될 때 모두 호출되는 메서드입니다.
이 방법으로 소품함께 사용 상태업데이트할 수 있습니다.
import React from 'react';
class MyComponent extends React.Component {
static getDerivedStateFromProps(props, state) {
if (props.value !
== state.value) {
return { value: props.value };
}
return null;
}
render() {
return <div>{this.state.value}</div>;
}
}
export default MyComponent;
shouldComponentUpdate()
shouldComponentUpdate() method는 구성 요소가 업데이트될 때 호출되는 메서드입니다.
이 방법으로 소품나 상태변경 사항이 발생할 때 구성 요소를 다시 렌더링해야 하는지 여부를 반환합니다.
반환 값은 잘못된이면 구성 요소가 업데이트되지 않습니다.
import React from 'react';
class MyComponent extends React.Component {
shouldComponentUpdate(nextProps, nextState) {
if (this.props.value === nextProps.value) {
return false;
}
return true;
}
render() {
return <div>{this.props.value}</div>;
}
}
export default MyComponent;
만들다()
만들다() 메서드는 구성 요소가 렌더링될 때 호출되는 메서드입니다.
이 메서드는 화면에 표시할 JSX를 반환합니다.
import React from 'react';
class MyComponent extends React.Component {
render() {
return <div>Hello, World!
</div>;
}
}
export default MyComponent;
componentDidUpdate()
componentDidUpdate() method는 구성 요소가 업데이트된 후 호출할 메서드입니다.
이 방법에서는 이전 방법 소품나 상태그리고 현재 소품나 상태비교를 통해 필요한 것을 할 수 있습니다.
import React from 'react';
class MyComponent extends React.Component {
componentDidUpdate(prevProps, prevState) {
if (this.props.value !
== prevProps.value) {
// value 값이 변경된 경우에만 작업을 수행합니다.
}
}
render() {
return <div>{this.props.value}</div>;
}
}
export default MyComponent;
해체
구성 요소가 DOM에서 제거되는 프로세스입니다.
componentWillUnmount()
componentWillUnmount() method는 구성 요소가 DOM에서 제거되기 전에 호출될 메서드입니다.
이 방법을 사용하면 이벤트 리스너를 해제하고 외부 라이브러리를 정리하는 등의 작업을 수행할 수 있습니다.
import React from 'react';
class MyComponent extends React.Component {
componentWillUnmount() {
// 이벤트 리스너 해제 등의 작업을 수행합니다.
}
render() {
return <div>Hello, World!
</div>;
}
}
export default MyComponent;
졸업 증서
React 구성 요소 및 수명 주기 메서드에 대해 배웠습니다.
컴포넌트는 사용자 인터페이스를 작은 단위로 나누어 관리할 수 있는 독립적인 모듈이며 라이프사이클 메서드는 컴포넌트가 생성, 업데이트 및 제거될 때 수행할 수 있는 작업을 정의하는 메서드입니다.
이를 사용하여 React 애플리케이션을 보다 효율적으로 개발할 수 있습니다.