[React] Class Component
2023. 10. 2. 16:52ㆍReact
728x90
반응형
1. 기본 형태
클래스 컴포넌트의 기본 형태를 먼저 보자!ES7 React/Redux/React-Native/JS snippets
Extension을 사용하고 있다면 rcc를 입력하면 기본 형태를 자동으로 입력할 수 있다.
import React, { Component } from 'react'
export default class AppClass extends Component {
render() {
return (
<div>
</div>
)
}
}
2. State
1) state 만들기
클래스 컴포넌트는 hook이 없다!
따라서 function 컴포넌트처럼 useState를 사용할 수 없다.
constructor
메서드 안에서 state 객체를 만들어주고 안에 필요한 state들을 요소로 넣어준다.
(이 constructor는 클래스의 객체가 생성될 때 자동으로 호출되는 생성자다.)
export default class AppClass extends Component {
constructor(props) {
super(props);
this.state = {
// 필요한 state들 작성
counter: 0,
value: 0,
};
}
~~~ 생략 ~~~
}
2) state 사용하기
만들어 둔 state를 사용할 때는 state 이름 앞에 this.state.
을 붙여준다.
{/* state 사용하기 */}
<div>state:{this.state.counter}</div>
3) setState : state 변경하기
state의 값을 변경할 때는 this.setState()
안에 변경할 값을 다시 키: 값
형태로 넣어주면 된다.
// state 값 변경하기
this.setState({
counter: this.state.counter + 1,
value: this.state.value + 1,
});
3. 함수
클래스 내부의 함수는 메소드가 되기 때문에 함수 앞에 const 키워드를 붙이지 않고 바로 함수 이름(메소드 이름)으로 만들어준다.
사용할 때는 state를 사용하는 것과 마찬가지로 this.메서드명
export default class AppClass extends Component {
constructor(props) {
super(props);
this.state = {
counter: 0,
value: 0,
};
}
// 함수 만들기
increase = () => {
this.setState({
counter: this.state.counter + 1,
value: this.state.value + 1,
});
};
render() {
return (
<div>
<div>state:{this.state.counter}</div>
<button onClick={this.increase}>클릭</button>
</div>
);
}
}
4. LifeCycle
1) Mounting
컴포넌트가 생성될 때 실행되는 것들
constructor()
- state를 생성한다.
render()
- UI를 그리는 작업을 담당한다.
componentDidMount()
- 주로 API 호출을 많이 한다.
componentDidMount() {
console.log("componentDidMount");
}
2) Updating
- state가 업데이트 되거나
- 새로운 props가 전달되거나
- 강제 업데이트
forceUpdate()
가 일어날 경우
componentDidUpdate()
- state가 업데이트된 이후에 실행할 로직을 작성한다.
componentDidUpdate() {
console.log("componentDidUpdate", this.state);
}
3) Unmounting
componentWillUnmount()
- 컴포넌트가 종료될 때 실행할 로직을 작성한다.
componentWillUnmount() {
console.log("componentWillUnmount");
}
728x90
반응형
'React' 카테고리의 다른 글
[React] Router (version 6) (0) | 2023.10.02 |
---|---|
[React] Describing the UI (2) | 2023.09.27 |
[React] Quick Start :: 80% of React concepts (0) | 2023.09.12 |