Class Component
state(필드 대체)를 가지고 있고 이를 수정할 수 있다.
라이프 사이클에 따른 생명주기 메서드를 사용할 수 있다.
state값이 변경되면 리액트는 변화를 인식하고 그에 맞는 화면을 출력하기 위해 component를 리랜더링한다.
그래서 state값을 변경할 때는 state에 어떤 숫자를 넣어서 변경하는 게 아닌
this.setStatus() 함수를 이용해서 새로운 status값을 넣어주면 된다.
#여기서 랜더링이 안 되게 하려는 이유는 불필요한 리랜더링이 발생할 경우 불필요한 계산과 작업이 이루어지기 때문에 컴포넌트의 성능이 저하되기 때문
생명주기(라이프 사이클)
react의 component 라이프 사이클은 생성(mount), 업데이트(Update), 제거(Unmount) 단계로 나누어져 있고
각 단계마다 componentDidMount, componentDidUpdate, componentWillUnmount 같은 메서드를 사용해서 DOM을 조작하거나 리소스를 정리할 수 있는 기능을 말한다.
class Comment extends Component {
constructor(props){
super(props)
this.state = {}
}
componentDidMount(){
console.log(`${this.props.id}의 componentDidMount 실행됨`)
}
componentDidUpdate(){
console.log(`${this.props.id}의 componentDidUpdate 실행됨`)
}
componentWillUnmount(){
console.log(`${this.props.id}의 componentWillUnmount 실행됨`)
}
render() {
return (
<div style={styles.wrapper}>
<span style={styles.commentText}>
{this.props.message}
</span>
</div>
)
}
}
export default Comment
js에서는 class에 필드영역이 없기 때문에
저장하고 싶은 데이터를 state라는 객체에 key-value형태로 저장한다.
비구조화 할당
: 객체나 배열의 특정 값을 더 간편하게 추출해서 변수에 할당할 수 있게 해주는 문법으로
객체에서 필요한 값만 꺼내서 사용하고 싶을 때 사용함
const commentList = this.state.commentList;
이걸 비구조화 할당 문법을 사용하면 아래의 코드가 된다
const { commentList } = this.state;
설명을 하자면
this.status라는 객체에서 commentList라는 속성만 꺼내서 commentList라는 변수에 저장하는 것
응용하면 여러개의 속성들을 변수들에 한번에 추출할 수 있다
const { commentList, data1, data2 } = this.state;
this.status에 있는 속성들을 한번에 변수에 할당한 코드.
만약 이 코드를 기존의 코드처럼 작성하려면 상당히 길어진다
const commentList = this.state.commentList;
const data1 = this.state.data1;
const data2 = this.state.data2;
이렇게 3줄이나 된다.
잘쓰면 가독성도 좋고 간결하게 작성도 가능한 문법이 바로 비구조화할당
'React' 카테고리의 다른 글
React - useEffect (0) | 2024.10.25 |
---|---|
React - Hook / useState (.jsx) (0) | 2024.10.24 |
React - useCallBack (0) | 2024.10.24 |
React - 컴포넌트를 이용한 리스트 랜더링 (1) | 2024.10.21 |
React - 컴포넌트 (1) | 2024.10.21 |