✏️ 구현 내용

React 적용

  • script로 react, react-dom

Compoent 단위로 구현하기

  • HeaderComponent
  • ContainerComponent
    • VideoComponent
    • NavComponent
  • SideNavComponent
    • GrayBoxComponent
    • WhiteBoxComponent

Props 전달

  • props 전달 최대한 적게 하기

👩‍💻 Issue

  • event delegation 사용 ❌
  • → event delegation을 사용하는 이유?
  • menu, video에서 중복 컴포넌트 제거 ⭕
  • → map 이용 (component를 return 해줘야 해서 forEach가 아닌 map 이용)

⛏️ 피드백

1️⃣ 화면 크기에 따라 video 크기 조정

#videos {
  display: flex;
  flex-wrap: wrap;
}

flex와 flex-wrap을 이용해 화면 크기에 맞게 한 줄에 나오는 video 개수를 조정한다.

2️⃣ Event delegation로 상위 태그에 이벤트 등록

React.useEffect(() => {
	document
  .getElementById("header-menus")
  .addEventListener("mouseover", whiteBoxOnMouseOver);

  document
  .getElementById("header-menus")
  .addEventListener("mouseout", whiteBoxOnMouseOut);
}, []);
React.useEffect(() => {
	document
  .getElementById("menus")
  .addEventListener("mouseover", navOnMouseOver);

  document
  .getElementById("menus")
  .addEventListener("mouseout", navOnMouseOut);
}, []);
React.useEffect(() => {
	document
  .getElementById("videos")
  .addEventListener("click", videoOnClickHandler);
	  return () => {
	    document
      .getElementById("videos")
      .removeEventListener("click", videoOnClickHandler);
    };
});

상위 태그에 event를 등록해 조건문으로 특정 id일 때만 event가 실행되게 해준다.

3️⃣ HeaderComponent 세분화

const HeaderEndContainerComponent = () => {
	return (
		<header id="header">
			<HeaderStartContainerComponent />
			<HeaderMiddleContainerComponent />
			<HeaderEndContainerComponent />
		</header>
	);
}

HeaderComponent를 더 작은 Component 들로 나누었다.

🧷 Github

stageus_front-end/youtube_component at main · kknyapple/stageus_front-end

'Assignment' 카테고리의 다른 글

week4 - CRA  (0) 2022.12.10
week3 - hook  (0) 2022.12.10
week1 - ES6  (0) 2022.12.10
스테이지어스 was  (0) 2022.10.08
스테이지어스 4주차 과제  (0) 2022.10.08

+ Recent posts