한입크기로잘라먹는리액트
![[React] 프로젝트 최적화](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FQ8B47%2Fbtshzme7jfS%2FAAAAAAAAAAAAAAAAAAAAAE5oK3OsfzCQ5qiHXq-A62KuuRIgI66Hzh0pUL4H8duH%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D3ir1CKKZHsPbnd8I9%252BjCgYaEmVY%253D)
[React] 프로젝트 최적화
이 블로그는 유데미 '한입 크기로 잘라먹는 리액트' 강의를 듣고 복습하고자 작성되었습니다. 목차 1. Memoization으로 연산과정 최적화 2. React.memo로 컴포넌트에 리렌더 조건 걸기 3. useCallback으로 함수 전달 4. 기타 최적화 1. Memoization으로 연산과정 최적화 Memoization이란, 이미 계산해본 결과를 기억해뒀다가 동일한 계산을 시키면 기억해놨던 데이터를 바로 반환시키는 방법입니다. memoization을 이용해 일기데이터에서 내 기분의 비율을 분석해주는 기능을 넣어봅시다. 1. 분석 함수 추가 const getDiaryAnalysis = () => { console.log('일기 분석 시작'); const goodCount = data.filter((i..
[React] 일기장 프로젝트 2. 페이지 구현 - 수정, 상세화면
이 블로그는 유데미 '한입 크기로 잘라먹는 리액트' 강의를 듣고 복습하고자 작성되었습니다. 목차 1. 수정페이지 2. 상세페이지 1. 수정페이지(/edit) 수정페이지는 일기 작성페이지와 거의 유사해서 만드는 과정도 간단합니다. 1. id 정보와 일기 데이터 가져오기 id는 App.js의 route에서 path variable로 설정한 후 useParams를 이용해 id 객체로 불러올 것입니다. 또 일기 데이터는 일기 작성화면에서 구현했듯 useContext를 이용해 가져올 것입니다. 1-1. Edit 컴포넌트 만들기 import { useNavigate } from 'react-router-dom'; const Edit = () => { const navigate = useNavigate(); retu..
![[React] 일기장 프로젝트 2. 페이지 구현 - 홈화면](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Flnvlp%2FbtscfzxJ351%2FAAAAAAAAAAAAAAAAAAAAAMtbLLCrZojeH5UsepJUfb2U3NCzJz3o0J_eZekSJMxz%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DK9A%252BS4lo1s7u21OYZbJxvkpcJ9I%253D)
[React] 일기장 프로젝트 2. 페이지 구현 - 홈화면
이 블로그는 유데미 '한입 크기로 잘라먹는 리액트' 강의를 듣고 복습하고자 작성되었습니다. 목차 1. 헤더 2. 다이어리 리스트 3. 필터 4. 다이어리 아이템 가장 먼저 홈화면의 구조를 보겠습니다. 맨 위에 현재 월을 알려주는 헤더, 그 밑에 필터가 있고, 그 아래에 일기 리스트가 있습니다. Home 컴포넌트를 만든 후, 각 요소를 추가해봅시다. 1. 헤더 1. 날짜 state 만들고 headText 설정 import { useState } from 'react'; const [curDate, setCurDate] = useState(new Date()); const headText = `${curDate.getFullYear()}년 ${curDate.getMonth() + 1}월`; 현재 날짜 sta..
![[React] 일기장 프로젝트 1. 기초 작업](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb82SUo%2FbtscwnwaTdm%2FAAAAAAAAAAAAAAAAAAAAAFDWkZnfSLnzFql6yx1xrrLoTsXddoJl4fOh_IKzMt4I%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DQKHPi2%252F8Fh0XBBAjMG1Y2zwLVIQ%253D)
[React] 일기장 프로젝트 1. 기초 작업
이 블로그는 유데미 '한입 크기로 잘라먹는 리액트' 강의를 듣고 복습하고자 작성되었습니다! 목차 1. 기본 세팅 2. useReducer와 Context 만들기 1. 기본 세팅 기본 세팅에서는 크게 4가지를 할 것입니다. 1. 폰트 세팅 2. 레이아웃 세팅 3. 이미지 에셋 세팅 4. 공통 컴포넌트 세팅 1. 폰트 세팅 폰트를 사용할 때는, 해당 폰트가 오픈 폰트 라이선스인지 꼭 확인해야 합니다. 오픈 폰트 라이선스(OFL, Open Font License)는 글꼴 및 관련 SW용으로 특별히 설계된 무료 오픈소스 라이선스입니다. 사용, 번들링, 수정 및 재배포를 허용하는 공통 라이선스에 따라 작업 릴리스가 가능합니다. 오픈폰트 라이선스를 지원하는 대표적인 사이트가 Google Web Fonts입니다. G..
[React] 리액트 생애주기와 useEffect
이 블로그는 유데미 '한입 크기로 잘라먹는 리액트' 강의를 듣고 복습하고자 작성되었습니다! 목차 1. 리액트 생애주기(Lifecycle) 2. Lifecycle 실습 3. API 호출 1. 리액트 생애주기(Lifecycle) 리액트의 생애주기란, 시간의 흐름에 따라 프로그램이 실행(Mount)되고, 변화(Update)되며, 종료(UnMount)되는 과정입니다. 생애주기별로 여러 함수가 있는데, 이들은 다 클래스로만 사용이 가능합니다. 사실 이때까지 사용한 State, Ref도 클래스로만 사용이 가능했습니다. 하지만 함수형으로 사용하기 위해 저희는 React Hooks를 이용했던 것입니다. 우리가 사용한 useState, useEffect, useRef 형태의 함수형이 모두 React Hooks입니다. 그..
[React] 데이터 삭제하기, 데이터 수정하기
이 블로그는 유데미 '한입 크기로 잘라먹는 리액트' 강의를 보고 복습하고자 작성되었습니다! 이미 작성된 일기 데이터의 삭제와 수정 부분을 만들어보겠습니다. 목차 1. 데이터 삭제 2. 데이터 수정 1. 데이터 삭제 1. DiaryItem 리턴에 삭제 버튼 만들기 2. App.js에 onDelete 함수 만들기 const onRemove = (targetId) => { console.log(`${targetId}가 삭제되었습니다`); }; 일단 콘솔에 출력만 하도록 만들었습니다. 3. 만든 함수를 불러오도록 하기 먼저 DiaryItem의 부모인 DiaryList에 함수를 전달합니다. const DiaryList = ({ onRemove, diaryList }) => {}; 그리고 DiaryList에서 pr..
[React] 리액트로 프로젝트 만들기
이 블로그는 한입 크기로 잘라먹는 리액트 강의를 듣고 복습하기 위해 작성되었습니다! 목차 1. 리액트 프로젝트 초기화 2. useState로 사용자 입력 처리 3. 여러 state 한번에 관리하기 1. 프로젝트 초기화 프로젝트를 처음 만드는 과정입니다. 1. 만들고 싶은 위치에 프로젝트 이름으로 폴더 만들기 2. Create-React-App으로 초기화하기 npx create-react-app [프로젝트 이름] (npx가 설치되어있지 않다면 아래 명령어로 따로 설치해야 합니다) npm install npx -g 3. 디렉토리, 파일 정리 위의 명령어로 설치할 경우 [프로젝트명]->[프로젝트명]->[파일들] 이런식으로 디렉토리 구조가 생기므로, [프로젝트명]->[파일들] 이렇게 되도록 파일들을 옮기고, 디..