온라인 강의/ReactJS로 영화 웹 서비스 만들기 [Nomad]

#7.5 React Router

유호야 2023. 5. 24. 03:31
반응형

먼저 React Router 를 사용하기 위해서 몇 가지 import 해야 함

 

import {
	BrowserRouter as Router, Switch, Route, Link
} from "react-router-dom";

 

Switch는 Route를 찾는 것

Route는 웹브라우저 상에 입력된 url을 말한다
route를 찾으면 컴포넌트를 Rendering한다 

 

App.js

강의가 조금 옛날 꺼라서 프론트엔드가 슉슉 바뀌는 것도 감안해서

강의에서 설명하던 Switch라는 기능은  Routes로 변경되었다.

 

import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';
import Home from './routes/Home';

function App() {
  return (
    <Router>
      <Routes>
        <Route path="/" element={<Home />} />
      </Routes>
    </ Router>
  );
}
export default App;

 

react-router-dom은

아주 멋진 컴포넌트 모음집이다

첫번째 컴포넌트는 Router였다

Router를 먼저 렌더링 해주고, 그 안에 들어가는 것들은 url 주소에 따라 사용자에게 보여주고 싶은 것들이다

 

Link 컴포넌트

a 태그를 통해서도 방금 만든 컴포넌트들 간의 이동이 가능하지만 그렇게 될 경우 전체 페이지를 로딩 하는 문제가 생긴다. 리액트를 사용하는 이유가 불필요한 로딩을 없애주는 장점 때문에 쓰는 것이니.... 

그런 기능을 제공하는 것이 Link , HTML에서 a 태그의 역할을 한다고 생각하면 된다. 그러네 전체 페이지를 로딩하지 않고 SPA 기능을 제공하는 유용한 것, 새로고침 없이 스무스하게 이동하는 것을 느낄 수 있다

import { Link } from 'react-router-dom';

 from 'react' 라고 했다가 또 한창 헤맴

 


<Router>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/movie" element={<Detail />} />
      </Routes>
    </ Router>

Route들의 path는 url 주소이다. 

즉 url 주소에 따라서 element에 작성된 컴포넌트들이 화면에 rendering 되는 것

 

다음 시간에는 특정 값을 넘겨주는 경우와 같은 dynamic url 을 만드는 법에 대해서 배운다!

 

전체 코드

App.js

import { BrowserRouter as Router, Route, Routes } from 'react-router-dom';

import Home from './routes/Home';
import Detail from './routes/Detail';

function App() {
  return (
    <Router>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/movie" element={<Detail />} />
      </Routes>
    </ Router>
  );
}
export default App;

 

Movie.js 

import { Link } from 'react-router-dom';
function Movie({ id, title, summary, coverImg, genres }) {
  return (
    <div key={id}>
      <h1>
        <Link to="/movie">
          {title}
        </Link>
      </h1>
      <p>{summary}</p>
      <img src={coverImg} alt={title} />
      <ul>
        {genres.map((genre) => <li key={genre}>{genre}</li>)}
      </ul>
    </div>
  );
}

export default Movie;

 

반응형

'온라인 강의 > ReactJS로 영화 웹 서비스 만들기 [Nomad]' 카테고리의 다른 글

#7.7 Publishing  (0) 2023.05.26
#7.6 Parameters  (0) 2023.05.24
#7.4 Movie App part Two  (0) 2023.05.24
API FETCH 및 로딩 구현 복습  (0) 2023.05.24
#7.3 Movie App part One  (0) 2023.05.24