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)

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
FE RYAN

완벽하지 않으면 어때

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

11주 1일차 - react custom components 리팩토링, BFS

2022. 7. 4. 23:13
728x90

11주 1일차 - react custom components 리팩토링, BFS

1. 배운 것

  • css - transition
  • onFocus, onBlur
  • 데일리코딩 8번 - BFS 트리 순회
  • 종합 퀴즈 7번 - styled component 재사용

2. 내용 정리

  • onFucus: 포커싱 된 경우 이벤트 설정
  • onBlur: 포커싱 해제된 경우 이벤트 설정

데일리코딩 8번 - BFS 트리 순회

let bfs = function (node) {
  let queue = [node]; // root(시작 노드)를 배열에 넣은 상태로 큐를 선언, 초기화.
  const visitedNodeValues = []; // 방문한 노드의 정보를 담을 배열 선언.

  while (queue.length > 0) { // 큐에 요소가 있는 한 반복문 실행

    const currentNode = queue[0]; // 현재 노드
    queue.shift(); // Dequeue 시키기 (큐: 선입선출)

    visitedNodeValues.push(currentNode.value); // 현재 노드의 value를 방문한 노드의 value를 담는 배열에 추가

    currentNode.children.forEach((child) => queue.push(child)); // 탐색
  }
  return visitedNodeValues;
};

// 이 아래 코드는 변경하지 않아도 됩니다. 자유롭게 참고하세요.
let Node = function (value) {
  this.value = value;
  this.children = [];
};

// 위 Node 객체로 구성되는 트리는 매우 단순한 형태의 트리입니다.
// membership check(중복 확인)를 따로 하지 않습니다.
Node.prototype.addChild = function (child) {
  this.children.push(child);
  return child;
};
  • 참고) 이진 트리 BFS 구현 의사코드 : 자료구조 큐 사용.
    1. 큐 변수 = [ ], 방문한 노드의 value를 저장하는 변수 = [ ] 변수 2개를 빈 배열로 선언.
    2. 시작하는 노드(root)를 큐에 넣는다.
    3. 큐 안에 값이 있는 한 반복문을 계속 실행하면서
      1. 큐에서 현재 노드를 Dequeue하고 현재 노드의 value를 노드의 value를 저장하는 변수에 추가.
      2. 만약 Dequeue 된 현재 노드가 left 프로퍼티를 가지고 있다면 큐에 추가한다.
      3. 만약 Dequeue 된 현재 노드가 right 프로퍼티를 가지고 있다면 큐에 추가한다.

종합 퀴즈 2번

  • CSS-in-JS 방법으로는 렌더링 속도는 느리다. css코드를 js로의 변환과정을 거쳐야 함.
  • 따라서 css 작성 후 js 코드로 변환하는 등의 추가적인 작업이 필요하므로 css 작성을 위해 여러 라이브러리가 필요하다.

종합 퀴즈 3번

  • styled components 라이브러리 사용 시 전역 스타일 컴포넌트 <GlobalStyle /> 컴포넌트는 자식 요소를 가져선 안된다. 렌더링이 되지 않음. (createGlobalStyle does not render chilren.)

종합 퀴즈 7번

  • styled components 에서 컴포넌트 재사용시 () 소괄호로 감싼다. ex) const closeBtn = styled(Button)…;

줌 세션 - react custom component 과제 해설

  • npm start 안하고도 storybook을 켠 상태만으로도 구현 확인이 가능하다. 코드는 ide에서 작성, 결과는 storybook으로 확인 가능. (storybook에 해당 컴포넌트를 등록한 경우에만)
  • 이벤트 버블링: 자식 이벤트 발생이 부모 이벤트까지 영향을 끼침. 자식에서 e.stopPropagation(); 메소드를 실행하여 방지 가능.
  • & : 둘 다 가진 요소(ex: 동적으로 추가한 클래스명)
  • : 자식 선택자 (직계 자식만 선택. 자식의 자식은 x)

더 공부할 것

  • BFS 트리 순회 https://about-tech.tistory.com/entry/Algorithm-BFS-Queue-자바스크립트primePassword-문제-구현
  • 백준 1260번 풀이 https://jaekwan.tistory.com/113
728x90
저작자표시 비영리 변경금지 (새창열림)

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

11주 4일차 - Cmarket Redux 2  (0) 2022.07.08
11주 3일차 - Cmarket Redux 1  (0) 2022.07.06
10주차 일요일 - Flex 복습, 과제 리팩토링  (0) 2022.07.03
10주차 토요일 - 과제 리팩토링, new Map();  (0) 2022.07.03
10주 5일차 - react custom component 과제  (0) 2022.07.02
    '기록/코드스테이츠 프론트엔드' 카테고리의 다른 글
    • 11주 4일차 - Cmarket Redux 2
    • 11주 3일차 - Cmarket Redux 1
    • 10주차 일요일 - Flex 복습, 과제 리팩토링
    • 10주차 토요일 - 과제 리팩토링, new Map();
    FE RYAN
    FE RYAN

    티스토리툴바