FE RYAN
완벽하지 않으면 어때
FE RYAN
전체 방문자
오늘
어제

블로그 메뉴

  • 💾 깃허브 링크
  • 홈
  • 태그
  • 분류 전체보기 (151)
    • 개인프로젝트 (8)
      • 개인 포트폴리오 웹앱 (6)
      • 프론트엔드 기술면접 아카이빙 웹앱 (2)
    • 기록 (121)
      • 원티드 프리온보딩 인턴십 (0)
      • 코드스테이츠 프론트엔드 (75)
      • 생각들 (3)
      • Today I learned (32)
      • 회고 (9)
      • 리뷰 (1)
    • 개발 (17)
      • React (3)
      • Javascript (7)
      • CSS (1)
      • HTML (3)
      • HTTP (1)
      • 자료구조 (0)
      • 알고리즘 (2)
    • 코딩테스트 (2)
      • 백준 (2)
      • 프로그래머스 (0)
    • 디자인 (1)
      • UI & UX (1)
    • 수학 (0)
    • 자기계발 (0)

공지사항

인기 글

태그

  • 포트폴리오
  • 타입스크립트
  • 프론트엔드
  • 딥다이브
  • 코드스테이츠
  • useMemo
  • 자바스크립트
  • 원시타입
  • HTML
  • 회고
  • css
  • 부트캠프
  • 메인프로젝트
  • 자바스크립트 딥다이브
  • 신입개발자
  • seb 39
  • ES6
  • seb39
  • Til
  • 리액트

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
FE RYAN
기록/코드스테이츠 프론트엔드

10주차 토요일 - 과제 리팩토링, new Map();

기록/코드스테이츠 프론트엔드

10주차 토요일 - 과제 리팩토링, new Map();

2022. 7. 3. 00:03
728x90

10주차 토요일 - 과제 리팩토링, new Map();

1. 배운 것

  • 과제 베어미니멈 파트 복습
  • css flex 복습

2. 내용 정리

과제 복습 - Modal Component

  • 동작이 거꾸로 작동. 모달창 외부 클릭시 아무 변화 없고 모달창을 클릭 시 모달창이 닫힘.
  • stopPropagation 이해도 부족.
  • css 문제: 모달창 요소가 모달창 배경 좌상단 끝에서 안움직임.

과제 복습 - Toggle Component

// 조건부 스타일링: 조건에 따라 클래스 추가
className={`toggle-container ${isOn ? 'toggle--checked' : null}`}
  • CSS: 토글버튼 좌우로 움직이게 + 그라디언트 구현해야 함.

과제 복습 - Tab Component

  • CSS: 탭 메뉴와 선택된 탭 메뉴 하이라이팅 구현해야 함.

과제 복습 - Tag Component

// 태그 추가 메서드 내부

if (
	tags.indexOf(event.target.value) === -1 &&
  event.target.value.length !== 0
) {
  setTags([...tags, event.target.value]);
  event.target.value = '';
}

처음에 addTags 함수 안에서 if문의 조건을 3가지나 case1 && case2 && case3 으로 주었는데 콘솔로 확인해 보니 input에 입력이 있을 때마다 addTags 함수가 실행되고 있었다.
그래서 input 태그에 onKeyUp 이벤트 발생시 엔터 키를 쳤을 경우에만 addTags 함수를 실행시키기 위해 여러가지 방법을 다 해보았지만 실패했고 아래 코드처럼 단축평가를 사용했을 경우에만 의도대로 동작했다.
if(event.target.value) { … } 이런 식으로 조건을 줄 경우 event.target.value === ‘’ 일 경우 false 가 아니라 true가 됨에 주의해야 한다. 빈 문자열은 falsy 값이라고 처음에 입력값이 없을 경우에 해당하는 조건으로 저렇게 주었더니 의도대로 동작하지 않았다.
즉 아무것도 입력하지 않은 상태는 빈 문자열이 아니라 undefined이다.

// onKeyUp 핸들러함수 정의하기

<input
  className="tag-input"
  type="text"
  onKeyUp={e => {
    e.key === 'Enter' && addTags(e);
  }}
  placeholder="Press enter to add tags"
  />

→ onKeyUp 안에서 이벤트 핸들러 함수를 직접 정의해서 입력된 key가 Enter일 경우에만 addTags 함수를 실행시키기 위해서 삼항연산자, 일반 if문 이것저것 다 해보았지만 먹히지 않아서 다른 동기분께 여쭈니 단축평가는 제대로 동작한다고 하셔서 단축평가를 사용해보니 되었다. 왜 이렇게 했을때만 되는지 알아봐야겠다.    -> 해결: 함수 호출하면서 event를 인수로 넣어주면 if문으로도 동작함. 

자바스크립트 내장 객체 Map 사용법

별도 문서로 해시 설명에 첨언하여 정리함. https://github.com/ryan-kim-dev/data-structures-and-algorithms/blob/master/dataStructures/hash/hash.md
참고: 딥다이브 37장, 개발자의 품격 님 유튜브 강의
해시 문제를 풀 경우 또는 기타 객체를 사용해서 문제를 풀어야 할 경우 사용할때 굉장히 편리하고 코드가 명시적이다.

  • key 값을 일반 객체와 달리 어떤 자료형이든 사용할 수 있음. key 값으로 객체나 함수도 가능.
  • Map 객체를 생성하며 인수 전달 시 키-값 쌍의 이터러블 만 가능. 키 중복 시 값이 덮어씌워지므로 중복된 키를 갖는 요소가 존재할 수 없음.
  • 이터러블하므로 forEach문 사용 가능.
  • Map객체의 메서드와 프로퍼티
    • size: 요소 개수 확인 프로퍼티. *size 는 메서드가 아니라 프로퍼티다.
    • set : 요소 추가 메서드. (key 값과 value 값 지정)
    • get : 요소 취득 메서드. (Map 객체의 key값을 인수로 입력하여 해당 key의 value를 반환)
    • has : 요소 존재 여부 확인 메서드. (Map 객체에 지정된 요소가 있는지 여부를 boolean 값으로 반환)
    • delete : 요소 삭제 메서드.
    • clear : 요소 일괄 삭제 메서드.

참고 자료

  • 개발자의품격님 Map객체 유튜브 강의 https://www.youtube.com/watch?v=6DLLaHJi6Ks
  • 딥다이브 37장

3. 리뷰

3.1 좋았던 점

  • 베어미니멈 파트는 리액트 코드는 다시 복습했다.

3.2 아쉬웠던 점

  • 늦잠과 딴짓으로 오전 오후 시간 활용 못함.
  • 과제 css 추가 못함.

3.3 notes

개인 포폴사이트 먼저 만들고 커뮤니티를 만드려 했는데 정규 커리큘럼 일정 및 내 실력 여건상 커뮤니티를 먼저 만들면서 커리큘럼 내용 예습/복습에 활용하기로 계획을 바꾼다.
그동안 그렇게 미루고 미루던 백지 상태에서의 복습을 오늘은 할 수 있을 것 같았는데 빈둥대느라 날린 시간이 너무 길어 못했다. 내일 과제 css 구현을 얼른 마치고 과제 내용 백지에서 복습 해봐야겠다.
원래 redux 예습을 했어야 하는데 시간 활용을 제대로 하지 못해서 너무 쓰라리게 아쉽다.

728x90
저작자표시 비영리 변경금지 (새창열림)

'기록 > 코드스테이츠 프론트엔드' 카테고리의 다른 글

11주 1일차 - react custom components 리팩토링, BFS  (0) 2022.07.04
10주차 일요일 - Flex 복습, 과제 리팩토링  (0) 2022.07.03
10주 5일차 - react custom component 과제  (0) 2022.07.02
10주 4일차 - [React] Custom Component  (0) 2022.07.02
10주 3일차 - 피그마 2/ 알고리즘  (0) 2022.06.29
  • 1. 배운 것
  • 2. 내용 정리
  • 과제 복습 - Modal Component
  • 과제 복습 - Toggle Component
  • 과제 복습 - Tab Component
  • 과제 복습 - Tag Component
  • 자바스크립트 내장 객체 Map 사용법
  • 참고 자료
  • 3. 리뷰
  • 3.1 좋았던 점
  • 3.2 아쉬웠던 점
  • 3.3 notes
'기록/코드스테이츠 프론트엔드' 카테고리의 다른 글
  • 11주 1일차 - react custom components 리팩토링, BFS
  • 10주차 일요일 - Flex 복습, 과제 리팩토링
  • 10주 5일차 - react custom component 과제
  • 10주 4일차 - [React] Custom Component
FE RYAN
FE RYAN

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.