오늘은 react hooks
를 이용해 컴포넌트를 만드는 방법을 공부하고 혼자 실습해본 뒤 wepback
을 설치했다. 지난주 react class
로 구현한 부분을 hook로 다시 만들어보니 차이점을 잘 느낄 수 있었다. 다음 강의로 넘어가기 전 연습삼아 class로 만들었던 LikeButton에 count를 추가한 버튼을 hooks로 만들어보았다. 직접 만들어보니 setCount()함수 안에선 로직이 비동기로 처리되는 것을 확실히 확인할 수 있었다.
webpack
은 일단 설치만 해 두었다. 내일부터 설정하는 부분을 공부해야겠다.
정보처리기사 필기 결과는 아직 안 나오긴 했지만 바로 내일부터 실기 공부를 시작해야겠다. 사실 좀 촉박하다..
class LikeButton extends React.Component {
constructor(props) {
super(props);
// state(상태): 컴포넌트에서 변경될 수 있는 요소들 (ex 클릭 시 글자 변경)
this.state = {
liked: false
}
}
// 해당 클래스 인스턴스를 화면에 표시하는 방법
render() {
// js 안에서 html문법 사용(=JSX (js + xml))하기 위해 babel 사용
return <button type="submit" onClick={() => { this.setState({ liked: true }) }}>{this.state.liked === true ? 'Liked' : 'Like'}</button>;
}
}
const LikeButton = () => {
const [liked, setLiked] = React.useState(false);
const [count, setCount] = React.useState(0);
const onClick = (e) => {
setCount((prevCount) => {
return prevCount+1;
});
setLiked(liked ? false : true);
console.log(count);
// 비동기처리라 그런지 위에서 setCount로 count 증가시켜도 console.log엔 prevCount가 출력
// html 버튼에서 count값 가져올 땐 증가된 값 반영됨
};
return (
<>
<button onClick={onClick} type="button">{liked ? "Liked":"Like"} - {count}</button>
</>
);
}