-
[모각코+] 웹 리액트(React) 1월달과정 9일차모각코+/React 2022. 1. 21. 18:05728x90
✅ 오늘의 문제 : 새로운 페이지 생성 by Qcell | 코드메이트
이번 시간에서는 리액트의 특성 중 하나인 SPA(Single Page Application)을 학습했습니다. 말 그대로 리액트는 페이지가 하나인 어플리케이션이라는 뜻으로, HTML의 a로 링크를 만드는 것과는 확연히 다
codemate.kr
✅ 오늘의 문제 : 새로운 페이지 생성
이번 시간에서는 리액트의 특성 중 하나인 SPA(Single Page Application)을 학습했습니다.
말 그대로 리액트는 페이지가 하나인 어플리케이션이라는 뜻으로, HTML의 a로 링크를 만드는 것과는 확연히 다른 구조였습니다. react-router-dom 라이브러리를 설치한 뒤에 사용했습니다.
✔ index.js
// src/index.js import React from 'react'; import ReactDOM from 'react-dom'; import App from './App'; import { BrowserRouter } from 'react-router-dom'; ReactDOM.render( <React.StrictMode> <BrowserRouter> <App /> </BrowserRouter> </React.StrictMode>, document.getElementById('root'), );
페이지 폴더를 따로 만들어서 컴포넌트를 분리한 뒤에, Layout으로 모두 감싸주었습니다.
App.js
import youtubeData from './data/youtubeData.json'; import { Route, Routes } from 'react-router-dom'; import Home from './pages/Home'; import Explore from './pages/Explore'; import Subscription from './pages/Subscription'; import Assignment from './pages/Assignment'; function App() { return ( <Routes> <Route path="/" element={<Home />} /> <Route path="/explore" element={<Explore />} /> <Route path="/subscription" element={<Subscription />} /> <Route path="/assignment" element={<Assignment />} /> </Routes> ); } export default App;
Menu.js
import { Link } from 'react-router-dom'; import styles from './Menu.module.css'; function Menu() { return ( <div> <div> <Link to="/">홈</Link> </div> <div> <Link to="/explore">탐색</Link> </div> <div> <Link to="/subscription">구독</Link> </div> <div> <Link to="/assignment">과제</Link> </div> </div> ); } export default Menu;
그리고 오늘의 과제는 8일차의 삼항연산자 과제를 출력 할 Assignment 페이지를 생성하고, 메뉴에 링크를 추가하여 링크를 클릭하였을 때 8일차의 삼항 연산자 예제가 출력되어야 하는 문제였습니다.
이를 학습함으로써, 구독 링크를 클릭하였을 때 구독 아이콘이 변화하는 기능을 구현할 수 있을 것 같습니다.
Assignment.js
import Layout from '../components/shared/Layout'; import { useState } from 'react'; import styles from '../App.module.css'; function Assignment() { const [check,setSub]=useState(false); function subScribe(){ setSub(check=>!check); } return ( <Layout> {check? <button className={styles.sub2} onClick={subScribe}>구독중</button>:<button className={styles.sub1} onClick={subScribe}>Subscribe</button>} </Layout> ); } export default Assignment;
728x90'모각코+ > React' 카테고리의 다른 글
[모각코+] 웹 리액트(React) 1월달과정 11일차 (0) 2022.01.24 [모각코+] 웹 리액트(React) 1월달과정 10일차 (0) 2022.01.21 [모각코+] 웹 리액트(React) 1월달과정 8일차 (0) 2022.01.21 [모각코+] 웹 리액트(React) 1월달과정 7일차 (0) 2022.01.21 [모각코+] 웹 리액트(React) 1월달과정 6일차 (0) 2022.01.20