오늘의 키포인트
리액트 - SPA
나의 이해
SPA(Single Page Application) : 서버로부터 페이지의 모든 부분을 받아오지 않고 중복되는 부분을 제외한 필요한 부분만 받아 페이지 업데이트
문법 및 중요
spa
장점 : 사용자와의 interaction에 빠르게 , 서버 과부하 줄어듦, 전체 페이지 렌더링 안해도되서 더 나은 유저 경험
단점 : js파일이 큼 = 첫 로딩이 긺 (html파일은 거의 비었고 대부분 코드가 js에 들어있음),
검색 엔진 최적화(SEO)가 좋지 않음 (html에 정보가 별로 없어서 검색 로봇이 동작못함)
wireframe : 디자인 전에 선을 이용해 윤곽선 잡는것
라우팅(Routing) : 주소에 따라 다른 화면 보이는거
React SPA에서 라우팅을 위해 React Router이라는 라이브러리 많이 이용
React의 주요 컴포넌트
<BrowserRouter> : router 역할
<Switch>
<Route> : Switch와 함께 route matchers (경로 매칭)
<Link> : route changers (경로 변경)
import{BrowserRouter, Switch, Route, Link> from “react-router-dom”; // 이거로 import해와야함
1 react-router라이브러리 설치
npx create-react-app simpleroute // simpleroute 폴더에 React App설치
cd simpleroute
npm install react-router-dom // react-router 라이브러리 설치
2 App.js로 react-router 컴포넌트 꺼내오기 // js파일 최상단에 씀
import React from “react”;
import{BrowserRouter, Switch, Route, Link> from “react-router-dom”;
export default function App(){
return (…)
}
BrouwerRouter : 웹 애플리케이션에서 HTML5의 history API를 사용해 페이지 새로고침 안해도 주소 변경해주게끔
ReactDOM의 랜더 단계인 index.js에 넣어서 사용 가능 (BrowserRouter이 상위에 있어야지 Route 컴포넌트 사용가능)
index.js에 넣는 것
import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter } from 'react-router-dom';
ReactDOM.render(<BrowserRouter><App/></BrowserRouter>, document.querySelector('#root'));
<Switch> 컴포넌트는 여러 <Route>를 감싸서 경로 일치하는 하나의 라우터 렌더링 // 안쓰면 모두 렌더링
<Route> 컴포넌트는 path 속성을 지정하여 해당 path에 어떤 컴포넌트를 보여줄지 지정. Link 컴포넌트가 정해주는 URL 경로와 일치해야 작동
<Link> 경로를 연결해주는 컴포넌트 페이지 새로 안불러오고 HTML5 History API를 이용해 주소만 변경 // ReactDOM으로 렌더하면 <Link>컴포넌트는 <a>태그로 바뀜 // <Link>쓰는 이유는 <a>쓰면 모든 페이지를 불러오기 때문에 link는 페이지 전환 방지
exact 쓰는 이유
이것을 안쓰면 home처럼 Link to = ‘/’인 경우 /로 시작하는 Route 컴포넌트를 모두 보여줌
물론 안쓰고 switch만 써서 할 순 있겠지만 순서와 위치를 잘 생각해야함
ex)
<BrowserRouter>
<div>
<nav>
<li>
<Link to="/about">MyPage</Link>
</li>
</nav>
<Switch>
<Route exact path ="/">
<Home />
</Route>
</Switch>
<div>
</BrowserRouter>
기타
npm install react-router-dom : React router을 이용하기 위해 설치
'코딩 공부 > 코드스테이츠 TIL' 카테고리의 다른 글
Code States 21~22 HA 시험 (0) | 2021.11.09 |
---|---|
Code States 19~20일차 (0) | 2021.11.08 |
Code States 17일차 (0) | 2021.10.29 |
Code States 16일차 (0) | 2021.10.28 |
Code States 14~15일차 (0) | 2021.10.27 |