✏️ 구현 내용

Custom Hook

  • video 클릭하면 커지고 다시 클릭하면 작아지게 하기

State

  • menu 열고 닫는 기능 → true면 열고 false면 닫고 (애니매이션 x)
  • 태그에 직접 event 주지 않고 addEventListner로 등록하기

👩‍💻 Issue

  • useEffect에 event를 넣고 인자로 [ ]을 전달하여도 video 클릭하면 이벤트가 중복 실행 ⭕→ 하지만 아직까지 [ ] 넣으면 왜 안되는 지 모르겠음 ❓
  • → removeEventListner 이용
  • custom hook으로 video 하나마다 state 주기 ❌
  • → useState를 사용하면 모든 video가 하나의 state를 공유하게 됨
  • 전달 되는 object에 대한 props 줄이기 ⭕
  • → spread 연산자, destructing 이용
  • HeaderComponent에 있는 메뉴 버튼과 WhiteBoxComponent에 있는 메뉴 버튼 연결 ⭕
  • → 상위 컴포넌트인 App 컴포넌트에 HeaderComponent, WhiteBoxComponent를 자식 컴포넌트로 넣고, useState로 state를 만들고 props로 각 컴포넌트에 전달

⛏️ 피드백

1️⃣ useEffect 한 번만 실행되게 하기

useEffect에 [ ]나 removeEventListner 사용으로 evnet가 한번만 실행되게 해야한다. 이벤트 스케쥴러로 인해 이벤트는 Component rerendering과 별개로 따로 실행된다.

2️⃣ 낭비되는 div 태그 줄이기

const VideoItemComponent = (props) => {
	return (
     <>
        {id.map((a, index) => {
	        return (
	          <div key={index} id={`video${index}`}>
					)
				}
		</>
}

const VideoComponent = (props) => {
	return (
    <div id="videos">
      <VideoItemComponent {...videoInfoObj} />
    </div>
  );
}
const VideoItemComponent = (props) => {
return (
    <div id={`video${props.index}`}></div>
  );
}
	
const VideoComponent(props) = () => {
	return (
    <div id="videos">
      {videoInfoObj.id.map((a, index) => {
        return (
          <VideoItemComponent key={index} index={index} {...videoInfoObj} />
        );
      })}
    </div>
  );
}

낭비되는 태그를 줄이고 <></> 태그를 쓰지 않는다.

3️⃣ 리랜더링을 줄이는 방안 고민

4️⃣ Component 이름 수정

component 이름만 보고 알 수 있게 GrayBoxComponent, WhiteBoxComponent 등의 component 이름 수정

🧷 Github

stageus_front-end/youtube_custom-hook at main · kknyapple/stageus_front-end

'Assignment' 카테고리의 다른 글

week5 - Redux  (0) 2022.12.10
week4 - CRA  (0) 2022.12.10
week2 - Component  (0) 2022.12.10
week1 - ES6  (0) 2022.12.10
스테이지어스 was  (0) 2022.10.08

+ Recent posts