소주제 : 컴포넌트와 생명주기 & open API
1. 컴포넌트 생명주기
- isChange 라는 state를 만들어 주세요. 초기값은 false로 합니다.
- [변경], [이동] 2개의 버튼을 만들어 주세요.
- [변경] 버튼을 누르면 isChange를 true로 변경해 주세요.
- 이동 버튼을 누르면 '/' 페이지로 이동시켜 주세요.
- 컴포넌트가 렌더링이 되고난 이후에 경고메시지로 "Rendered!"를 표시해 주세요.
- 변경 버튼을 클릭하면 경고메시지로 "Changed!!"를 표시해 주세요.
⇒ 단, useEffect의 의존성 배열을 활용해 주세요.
- 이동 버튼을 클릭하면 경고메시지로 "Bye!!" 를 표시해 주세요.
⇒ 단, 경고메시지는 useEffect에서 작성되어야 합니다.
2. 클래스 컴포넌트를 함수형 컴포넌트로 변경하기
- 아래의 클래스 컴포넌트를 함수형 컴포넌트로 변경해 보세요.
import Router from "next/router";
import { Component } from "react";
export default class MyComponent extends Component {
state = {
count: 0,
};
componentDidMount() {
console.log("컴포넌트가 마운트됐습니다~");
}
componentDidUpdate() {
console.log("컴포넌트가 변경됐습니다~");
}
componentWillUnmount() {
alert("컴포넌트가 제거됩니다~");
}
onClickButton = () => {
this.setState((prev: { count: number }) => ({ count: prev.count + 1 }));
};
onClickMove = () => {
Router.push("/")
}
render() {
console.log("마운트 시작");
return (
<>
<div>카운트: {this.state.count}</div>
<button onClick={this.onClickCounter}>카운트(+1)</button>
<button onClick={this.onClickMove}>이동하기</button>
</>
);
}
}
3. axios로 rest기반 open-api 사용하기
- 아래의 open-api 주소에 접속하여 제공하는 api를 사용하여 화면에 그림을 그려보세요.
⇒ 힌트) useEffect에서 axios와 setState를 사용해야 합니다.
주소: [<https://dog.ceo/dog-api/>](<https://dog.ceo/dog-api/>)