Sparta/항해99

항해 사전준비 9일차 - 토이프로젝트 3 - 무비피디아

또롱또 2022. 5. 7. 15:39
728x90

드디어 완성이다.

다 만들고 다른사람들의 작품을 보는데 주눅이 들긴 한다.

그냥 넷플릭스 느낌만 나게 해봤다.

https://kevinkim910408.github.io/-Web-MoiveSite/

 

이번 토이프로젝트에서 정말 많은것을 얻어간다.

1. React - Bootstrap 설치

npm install react-bootstrap bootstrap

최상단의 루트파일인 src/index.js 또는 App.js 파일에 코드를 추가하면 부트스트랩의 스타일을 적용할 수 있다.

import "bootstrap/dist/css/bootstrap.min.css";

- 원하는 컴포넌트 불러오기

버튼을 넣으려고 하는 컴포넌트 파일 상단에 코드를 추가한다.

import Button from "react-bootstrap/Button";
// 또는
import { Button } from "react-bootstrap";

- 컴포넌트 사용하기

<Button> 태그를 통해 Button 컴포넌트를 사용한다.

App.js

import React from "react";
import "./App.css";
import "bootstrap/dist/css/bootstrap.min.css";
import { Button } from "react-bootstrap"

function App() {
  return (
      <div className="App">
        <Button>Hello</Button>
      </div>
  );
}

export default App;

2. Slider를 위한 Swiper.js  설치

npm i swiper

 

Document 주소

https://swiperjs.com/react#usage

3. 계속 오류나던 문제

- .map()은 배열에만 사용가능하다.

계속 객체에 사용하려다가 오류발생..

- react에서 return 다음에는 JSX문법을 써야하는데,

여기서는 if문 사용x -> 삼항연산자로 써야한다.

- for loop 도 사용x -> .map()을 사용

 

4. Youtube 혹은 비디오 집어넣는 코드

 <iframe width = "560"
    height = "315"
    src = {`https://www.youtube.com/embed/${details.yt_trailer_code}?autoplay=0&mute=0`}
    title = "YouTube video player"
    frameborder = "0"
    allow = "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
    allowfullscreen 
/> }

5. Jquery의 ajax() 말고, js의 fetch()

  // async wait으로 api 가져오기
  const getRomanceMovies = async () => {
    const json = await (await fetch(`https://yts.mx/api/v2/list_movies.json?genre=romance&sort_by=year`)).json(); // url
    setRomanceMovies(json.data.movies);
  }

6. 이번에는 css를 대부분 inline으로 적용했다. 

물론 몇몇 hover라던지, 큼직큼직한거는 따로 파일을 만들었지만..

<div style={{
    width:"100%", 
    height:"100vh", 
    backgroundImage:`url(${details.background_image_original})`, 
    backgroundSize:"cover", 
    display:"flex", 
    flexDirection:"column", 
    justifyContent:"center", 
    alignItems:"center"
}}>

인라인을 이렇게까지 우겨넣기도 했다. 

따로 빼기 귀찮기도 했고, 가독성도 나빠 보이지는 않아서 이랬는데, 

당연히 이러면 안되겠지..

 

내 다음목표는 영화앱에 재도전이다.

이번에는 css에 조금 더 신경써서

https://10009ukk.github.io/react-movie

https://keinn51.github.io/React_JS_Movie_Web_Nomad/

https://heimish902.github.io/Movie-introduction/

위의 세 사람의 작품이랑 비슷하게 만들면서 공부를 더 해보고싶다.

 

 

 

728x90