본문 바로가기

Hello! I'm haein, a junior front-end developer. Welcome to my space.
간단한 자기소개 '◡'
안녕하세요. 정리하는 것이 주특기이고, 인문논술로 대학을 가서 나름 글쓰기에 자부심(?)이 있는 주니어 개발자입니다. 개발 공부를 하면서 좀 더 정돈된 기록을 해보고 싶어서 블로그를 시작하게되었습니다. 게시글 하나하나 정말 정성스럽게 열심히 썼구요. 되도록이면 공식문서를 참고해서 객관적이고 정확한 정보를 작성하려고 노력했습니다. 그리고 제가 이해가 될 정도로 디테일하게 서술해서 웬만한 사람들도 이해가 가능할 것이라는것이 저의 뇌피셜입니다. 아무쪼록 저의 글을 읽는 사람들이 어떤 방향으로든 도움이 되셨으면 좋겠습니다. 참고로 연보라, 연핑크를 좋아하구여, 그라데이션도 좋아합니다. 그래서 내 취향에 맞게 커스텀 했습니다 ㅎㅎㅎ MBTI는 ISTJ입니다. 너무 TMI라서 toggle로 해뒀습니다. 궁금한 사람들은 펼쳐보시겠죠?

전체 글

(236)
[React] 프로필 사진 업로더 만들기, 프로필 변경/삭제/추가, 프로필 페이지 만들기 리액트로 프로필 업로더를 만들어볼 것이다! 구현과정에 대한 설명을 세세하게 적어둔 블로그가 없었기에 많이 헤맸었다. 그래서 나는 최대한 친절하게, 자세히, 하나하나 다 정리해보고자 한다. 1. 프로필 영역을 마크업 한다. ProfileChange.jsx import styles from "./ProfileChange.module.css"; import DeleteImg from "../../../assets/my-page/setting/profile-delete.png"; import DefaultImg from "../../../assets/my-page/setting/default-background.png"; const ProfileChange = () => { return ( 프로필 변경 블로그 ..
[React] useReducer를 코드에 적용하기 (emotion diary 프로젝트 2탄) useReducer 개념을 알아야 이해가 가기 때문에 아래 게시글을 보고 오시길 바랍니다! https://dev-ini.tistory.com/89 [React] useReducer로 복잡한 상태변화 로직을 컴포넌트로부터 분리하기 useReduer를 사용해서 복잡한 상태변화 로직을 컴포넌트로부터 분리하기 useReducer 위 사진에서 보다시피, App.js 컴포넌트 안에 굉장히 많은 상태변화함수 (onCreate, onEdit, onRemove)가 존재하는 상태이다 dev-ini.tistory.com 1. reducer 함수를 전달하고, 기본 state 빈배열로 설정한다. App.js import React, { useReducer } from "react"; import "./App.css"; impo..
[React] useReducer로 복잡한 상태변화 로직을 컴포넌트로부터 분리하기 useReduer를 사용해서 복잡한 상태변화 로직을 컴포넌트로부터 분리하기 useReducer 위 사진에서 보다시피, App.js 컴포넌트 안에 굉장히 많은 상태변화함수 (onCreate, onEdit, onRemove)가 존재하는 상태이다. 그리고 이 상태변화함수들은 컴포넌트 내에만 존재해야만한다. 상태를 업데이트 하기 위해서는 기존의 상태를 참고해야하기 때문이다. 그런데 컴포넌트의 코드가 길어지고 무거워지는건 결코 좋지 않다. 그래서 복잡하고 긴 상태변화 로직을 컴포넌트 바깥으로 분리해야한다. 그때 사용하는 것이 useReducer이다. 위 사진에는 useState만 사용해서 1부터 10000까지 각각 더할 수 있는 Counter가 있다. 그리고 10, 10, 100, 1000, 10000을 더할 수..
[React] Warning: you provided a `value` prop to a form field without an `onchange` handler. this will render a read-only field. if the field should be mutable use `defaultvalue`. otherwise, set either `onchange` or `readonly` Warning: you provided a `value` prop to a form field without an `onchange` handler. this will render a read-only field. if the field should be mutable use `defaultvalue`. otherwise, set either `onchange` or `readonly` 오류를 해결해보자! 1. 아래와 같은 오류가 떴는데, 이는 태그 사용 시 value 속성을 고정값으로 설정하지 않아서 생기는 오류이다. 오류가 생긴 부분의 코드 const MyCourseCalendar = () => ( ); export default MyCourseCalendar; 2. 해결방법: value 속성을 de..
[React] Warning: Each child in a list should have a unique "key" prop 오류 해결방법 Warning: Each child in a list should have a unique "key" prop 오류를 해결해보자! 1. 아래와 같이 오류가 떴는데, 이는 props를 map할때 생기는 오류이다. 2. 해결방법: 최상위 태그에 key={el.id} 를 추가한다. (el은 요소를 뜻함) 아래 예시에서는 최상위 태그에 key={it.id}를 추가하였다. *참고) 만약 map((item)=> 이런식이라면 key={item.id}가 되는 것임 const DiaryList = ({ diaryList }) => { console.log(diaryList) // return ( 일기 리스트 {diaryList.length}개의 일기가 있습니다. {diaryList.map((it) => ( // uniq..
[React] 공통 컴포넌트 세팅, 버튼 만들기 (onClick, props), 컴포넌트 사용 (emotion diary 프로젝트 1탄) 아래와 같은 공통 컴포넌트 버튼을 만들 것이다. 1. src/components 폴더 안에 MyButton.js 라는 파일(컴포넌트)을 생성한다. 2. MyButton.js의 기본 구조를 작성한다. MyButton.js const MyButton = () => { return( ) }; export default MyButton; 3. props로 text, type, onCilck을 받는다. MyButton.js const MyButton = ({ text, type, onClick }) => { return( ) }; export default MyButton; 4. button에 props를 연결한다. MyButton.js const MyButton = ({ text, type, onClick })..
[React] Routing (3) Path Variable(useParams), Query String(useSearchParams), Page Moving(useNavigate) 목차 1. Path Variable - useParams 2. Query String - useSearchParams 3. Page Moving - useNavigate 이 게시글을 보기 전에 봐야하는 게시글들 1. Router의 개념 (Router의 개념과 SPA와 CSR에 대한 설명이 있습니다.) https://dev-ini.tistory.com/81 [React] Routing (1) 개념, SPA & CSR Routing에 대해서 알아보자! Routing Router [위키백과] 어떤 네트워크 내에서 통신 데이터를 보낼 경로를 선택하는 일련의 과정 데이터의 경로를 실시간으로 지정해주는 역할을 하는 무언가 Routing 경 dev-ini.tistory.com 2. Router 설치 및 사용방법 (이..
[CSS Module] CSS Module 특징, 사용이유, 사용방법 목차 1. CSS Module 특징 2. CSS Module 사용이유, 사용방법 CSS Modules에 대해서 알아보자! CSS Module 특징 리액트 프로젝트에서 컴포넌트를 스타일링 할 때 CSS Module 이라는 기술을 사용하면, CSS 클래스가 중첩되는 것을 완벽히 방지할 수 있다. CRA나 VITE로 만든 프로젝트에서 CSS Module 를 사용 할 때에는, CSS 파일의 확장자를 .module.css 로 하면 된다. CSS Module의 장점은 아래와 같다. 1. 클래스 명의 전역 오염 방지 2. 고유한 클래스로 인하여 복잡한 클래스 명을 생각하며 작성하지 않음 (클래스 이름이 중첩되는것을 방지해준다.) 3. 사용 범위를 제한하여, 스타일링 하고싶은 컴포넌트가 다른 컴포넌트와 중복되는 클래스..