https://media.vlpt.us/images/soonmac/post/55bcd680-31c8-4079-bbd3-41e2a648bf1b/21-1.PNG

들어가며

넷플릭스 클론 사이트 배너에 트레일러 영상을 달았습니다. react-youtube는 유튜브에서 제공하고 있는 **IFrame Player API**를 편하게 쓸 수 있도록 컴포넌트 형태로 만든 것입니다. 이를 이용해서 동영상을 재생 혹은 일시정지하거나 이벤트 리스너를 추가할 수 있습니다.

설치

npm 설치

$ npm install react-youtube

import

import YouTube from 'react-youtube';

컴포넌트 살펴보기

컴포넌트 prop 구성

<YouTube
  videoId={string}                  // defaults -> null
  id={string}                       // defaults -> null
  className={string}                // defaults -> null
  containerClassName={string}       // defaults -> ''
  title={string}                    // defaults -> null
  opts={obj}                        // defaults -> {}
  onReady={func}                    // defaults -> noop
  onPlay={func}                     // defaults -> noop
  onPause={func}                    // defaults -> noop
  onEnd={func}                      // defaults -> noop
  onError={func}                    // defaults -> noop
  onStateChange={func}              // defaults -> noop
  onPlaybackRateChange={func}       // defaults -> noop
  onPlaybackQualityChange={func}    // defaults -> noop
/>

예시

<YouTube
//videoId : <https://www.youtube.com/watch?v={videoId}> 유튜브 링크의 끝부분에 있는 고유한 아이디
  videoId={video.key}
//opts(옵션들): 플레이어의 크기나 다양한 플레이어 매개 변수를 사용할 수 있음.
//밑에서 더 설명하겠습니다.
  opts={{
    width: "560",
    height: "315",
    playerVars: {
      autoplay: 1, //자동재생 O
      rel: 0, //관련 동영상 표시하지 않음 (근데 별로 쓸모 없는듯..)
      modestbranding: 1, // 컨트롤 바에 youtube 로고를 표시하지 않음
    },
  }}
  //이벤트 리스너
  onEnd={(e)=>{e.target.stopVideo(0);}}
/>

😢opts 관련해서 주의!opts prop에 변수를 할당하는 경우 No overload matches this call 타입스크립트 오류가 발생하는 경우가 있습니다. 깃헙 페이지에 가보니 다른 분들도 비슷한 오류를 겪고 있었고, 컴포넌트에 인라인으로 작성하니 오류가 발생하지 않았습니다.

동영상이 끝나면 처음 화면으로 돌아갑니다.

![<https://media.vlpt.us/images/soonmac/post/b2c79303-3a0a-4ac7-bab6-9f40084b99f9/21-2.PNG>](<https://media.vlpt.us/images/soonmac/post/b2c79303-3a0a-4ac7-bab6-9f40084b99f9/21-2.PNG>)

![<https://media.vlpt.us/images/soonmac/post/b02bd9b7-ad88-4ba6-8c05-5c9bc3020908/image.png>](<https://media.vlpt.us/images/soonmac/post/b02bd9b7-ad88-4ba6-8c05-5c9bc3020908/image.png>)

쿠키 관련 오류😢

보안을 위해 도메인 간의 쿠키를 공유할 수 없고, 이를 해결하기 위해서는 쿠키 속성을 SameSite=None과 Secure 옵션을 같이 지정해야한다고 합니다... 쿠키도 공부해야할 것 같습니다 (공부할 게 산더미🤣)

![<https://media.vlpt.us/images/soonmac/post/93c7b901-d737-4862-83df-2ced3de9a260/image.png>](<https://media.vlpt.us/images/soonmac/post/93c7b901-d737-4862-83df-2ced3de9a260/image.png>)

![<https://media.vlpt.us/images/soonmac/post/e321a5ec-0d4a-4880-bb2d-ef82e291f328/image.png>](<https://media.vlpt.us/images/soonmac/post/e321a5ec-0d4a-4880-bb2d-ef82e291f328/image.png>)

📎참고