오늘도 정리할게 많으니 후다닥 본론으로 들어간다잇!
useEffect 함수는 리액트 컴포넌트가 렌더링 될 때마다 특정 작업을 실행할 수 있도록 하는 Hook이라고 한다.
useEffect는 컴포넌트가 mount(생성)됐을때, 컴포넌트가 update(생성상태)됐을때, 컴포넌트가 unmount(파괴상태)됐을때 특정 작업을 처리할 수 있다.
즉, 클래스형 컴포넌트에서 사용할 수 있었던 생면주기 메소드를 함수형 컴포넌트에서도 사용할 수 있게 되었다고 한다.
useEffect 기본틀.
위 이미지는 함수형 컴퍼넌트다.
대체적으로 useState를 사용하여 함수형 컴퍼넌트를 사용한다.
위 이미지는 App.jsx와 components/Counter.jsx로 구성되어 있다.
먼저 이 코드는 React 프레임워크를 사용하여 작성되었다.
우선 첫 줄에 React에서 제공하는 useState를 가져온다. useState는 React의 상태를 관리할 수 있는 Hook 함수 중 하나다.
두 번째 줄은 "./components/Counter" 파일에서 Counter 컴포넌트를 가져오는 코드다.
useState를 사용하여 toggle과 count라는 두 개의 상태 변수를 생성하고, 기본값은 각각 false와 0으로 설정한다.
onClickToggle 함수는 버튼을 클릭하면 toggle 상태를 true로 반전시키는 역할을 한다.
App.jsx 코드에서는 toggle이 true일 때, Counter 컴포넌트를 화면에 렌더링 하도록 한다. 그리고 Counter 컴포넌트에는 count와 setCount라는 두 개의 props가 전달된다.
마지막으로, 버튼을 클릭하면 onClickToggle 함수가 실행되도록 이벤트 핸들러를 등록하고, 버튼의 스타일을 지정한다.
{toggle && <Counter count={count} setCount={setCount} />}
Counter 컴포넌트는 count와 setCount라는 두 개의 props를 받아와 사용한다.
컴포넌트 내부에서는 count를 증가시키는 onClickAdd 함수를 작성하고, onClickAdd 함수는 "+" 버튼을 클릭하면 count를 1 증가시키도록 한다.
useEffect Hook은 컴포넌트가 생성될 때와 count 상태가 변경될 때 실행된다.
첫 번째 인자로 전달되는 함수에서는 컴포넌트가 생성된 상태인 경우 "Counter 컴포넌트가 생성된 상태입니다." 메시지를 출력하고, count 상태가 0보다 큰 경우 "Counter 업데이트 되었습니다." 메시지를 출력하도록 했다.
두 번째 인자로 전달되는 배열 [count]는 count 상태가 변경될 때만 useEffect Hook이 실행되도록 했다.
마지막으로, return 문에서는 컴포넌트가 제거될 때 "Counter 제거" 메시지를 출력하도록 했다.
먼저 프로젝트 데이터가 포함된 projectData.json 파일과 PortfolioCard 컴포넌트를 import했다.
그리고 map() 함수를 사용하여 projectData 배열의 각 요소를 순회하면서 PortfolioCard 컴포넌트를 생성하도록 했다.
이 코드는 Portfolio 컴포넌트에서 사용되는 PortfolioCard 컴포넌트를 정의하는 코드다.
PortfolioCard 컴포넌트에 title, desc, image, index라는 props를 받아올 수 있도록 작성하고 이 props들이 PortfolioCard에 표시되도록 한다.
colors 배열은 카드의 배경색을 지정하고, 배열에 포함된 색상은 index 값에 따라 순환된다.
${}/${}
}를 사용하여 JS형식으로 작성되었다.{${process.env.PUBLIC_URL}/${image}
}오늘은 오전부터 오후까지 뭔가 복잡한 느낌이였다. 오전에는 새로운 useEffect를 배웠는데 개념은 이해가 됐지만 어떻게 사용되는건지 감이 잡히지 않았다. 오후에는 포트폴리오를 업데이트하는 시간을 가졌는데 강사님께서 우리가 기존에 배웠던 것들을 막 섞으시면서 코드를 스피디하게 써내려가시니 정신이없었다. 오늘은 뭔가 어렵다의 느낌보다 복잡하다? 머릿속이 뒤죽박죽 섞이는 느낌이였다. 5시가 되어 수업종료를 한시간 남겨두고 개인시간을 주셨는데 어제처럼 강사님께 다시 수업내용을 들어볼까 하다가 우리 회고팀에 들어와 주용님과 코드리뷰하는 시간을 가지기로 했다. 강사님은 워낙 똑똑하시고 전문성이 있으시기 때문에 실제 현업에서 사용할 수 있는 언어로 설명을 해주시는게 좋지만 그런점이 이해가 어려운 부분도 있다. 그래서 나는 내가 이해하기 쉬운 비유를 통해 이해하는 시간을 갖기 위해서 주용님과 시간을 가졌다. 확실히 잘모르지만 하나씩 코드를 보며 리뷰를 하니 이해하기가 좀 더 수월한 느낌이였다. 그리고 다시 TIL에 오늘 수업내용에 대해서 정리하다 나의 멘토 은찬스승님이 오셔서 도움을 주셨다. 이해가 안됬던 부분이나 머릿속에 정리가 되지 않은 부분들을 자세하게 알려주셨고, 덕분에 오늘도 머릿속을 깨끗이 정리하고 잠에 들 수 있을것 같아 마음이 좋다. 아직 모르는 부분이 많지만 그래도 하나씩 하나씩 머릿속에 넣어가며 이해할 수 있는 수준이 조금씩이나마 올라가는것 같아 기분이 좋다. 내일도 분명 이해 않되는 부분이 생기겠지만 또 잘 이해해나가리라 생각된다.