๐ปWEB FrontEnd (66) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ detail ํ์ด์ง ๋ง๋ค๊ธฐ ๋ฆฌ์กํธ ๋ผ์ฐํธ ์ ์ผ๋ก ๊ตฌํํด๋ณด์ => useParams()ํจ์ ์ด์ฉ - App.js import './App.css'; import { useState } from 'react'; import data from './data.js'; import {Routes, Route } from 'react-router-dom'; import DeatailPage from './pages/DetailPage'; function App() { let [shoes] = useState(data); let navigate = useNavigate(); return ( //์์ธํ์ด์ง๋ก ์ด๋ ); } export default App; - DetailPage.js import { useParams } from "react-.. ๋ผ์ฐํ (์ ํ , navigate, nested routes, outlet) react-router-dom ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น ํฐ๋ฏธ๋์ ๋ค์ ๋ช ๋ น์ด ์ ๋ ฅ npm install react-router-dom@6 ๊ทธ ๋ค์ index.js ํ์ผ๋ก ๊ฐ์ import { BrowserRouter } from "react-router-dom"; const root = ReactDOM.createRoot(document.getElementById('root')); root.render( ); โฒ import ์ด์ฉ๊ตฌ ํด์ค๊ณ ์ด๊ฑธ๋ก ์ด๊ฑธ ๊ฐ์ธ๋ฉด ๋ ๋ผ์ฐํ ์ฌ์ฉ๋ฒ - App.js import './App.css'; import {Routes, Route, Link} from 'react-router-dom'; function App() { let [shoes] = useState(data); retu.. import, export export default ๋ณ์๋ช ; ์ด๋ ๊ฒ ์ฐ๋ฉด ์ํ๋ ๋ณ์๋ฅผ ๋ฐ์ผ๋ก ๋ด๋ณด๋ผ ์ ์๋ค. //data.js ํ์ผ let a = 10; export default a; //๋ณ์๊ฐ ์ฌ๋ฌ๊ฐ๋ฉด let a = 10; let b = 20; export default { a, b }; ๋ค๋ฅธ ํ์ผ์ ์๋ ๋ฐ์ดํฐ๋ฅผ importํด์ ๊ฐ์ ธ์ฌ ์ ์๋ค. //App.js ํ์ผ import a from './data.js'; //๋ณ์๊ฐ ์ฌ๋ฌ ๊ฐ๋ฉด import { a, b } from './data.js'; ์ด๋ฏธ์ง ์ฝ์ ํ๋ ๋ฐฉ๋ฒ ์ด๋ฏธ์ง๋ฅผ ์ฝ์ ํ๋ ๋ฐฉ๋ฒ ๋ฐฉ๋ฒ โ . App.css ํ์ผ์ ์ด๋ฏธ์ง ๊ฒฝ๋ก ์ง์ //App.js //App.css .main-bg { height: 300px; background-image: url('./img/bg.png'); background-size: cover; background-position: center; } ๋ฐฉ๋ฒ โก. App.js ํ์ผ์ ์ด๋ฏธ์ง ๊ฒฝ๋ก ์ง์ import './App.css'; import imgpath from './img/bg.png' function App() { return ( ); } export default App; public ํด๋์ ์ด๋ฏธ์ง๋ฅผ ์ ์ฅ ์ฌ๋ฌ๊ฐ์ง ์์ค์ฝ๋๋ src ํด๋์ ๋ณด๊ดํ๋ฉด ๋๋๋ฐ ์ด๋ฏธ์ง๊ฐ์ static ํ์ผ์ ๊ฒฝ์ฐ public ํด๋์ ๋ณด๊ดํด๋ ๋ฉ๋.. React์ Bootstrap ์ ์ฉ react bootstrap ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น https://react-bootstrap.github.io/getting-started/introduction 1. ํ๋ก์ ํธ์ react bootstrap ์ค์น npm install react-bootstrap bootstrap 2. css ํ์ผ import ๋ฐฉ๋ฒโ App.js ํ์ผ์ ๋ค์ ์ฝ๋ ์ฝ์ import 'bootstrap/dist/css/bootstrap.min.css'; ๋ฐฉ๋ฒโก index.html ํ์ผ์ ๋ค์ ์ฝ๋ ์ฝ์ props : ๋ถ๋ชจ -> ์์ state ์ ์ก 1. props๋ก ๋ถ๋ชจ -> ์์ state ์ ์กํ๋ ๋ฒ ์์์ปดํฌ๋ํธ ์ฌ์ฉํ๋ ๊ณณ์ ๊ฐ์ ์์์ปดํฌ๋ํธ ๋ง๋๋ function์ผ๋ก ๊ฐ์ props๋ผ๋ ํ๋ผ๋ฏธํฐ ๋ฑ๋ก ํ props.์๋ช ์ฌ์ฉ ์ฐธ๊ณ . 1) props๋ ์ด๋ ๊ฒ 10๊ฐ 100๊ฐ 1000๊ฐ ๋ฌดํํ ์ ์ก์ด ๊ฐ๋ฅํ๋ค. 2) ๊ผญ state๋ง ์ ์กํ ์ ์๋๊ฑด ์๋๋ค. ์ผ๋ฐ ๋ณ์, ํจ์ ์ ์ก๋ ๊ฐ๋ฅํ๊ณ ์ผ๋ฐ ๋ฌธ์์ ์ก์ ์ค๊ดํธ ์์ด ์ด๋ ๊ฒ ํด๋ ๋๋ค. 3) ๋ถ๋ชจ -> ์์ ์ธ ๋ค๋ฅธ ๊ด๊ณ์์๋ state ์ ์ก์ด ๋ถ๊ฐ๋ฅํ๋ค! ex. ๋ถ๋ชจ ์ปดํฌ๋ํธ์ state(๊ธ์ ๋ชฉ)๋ฅผ ์์ ์ปดํฌ๋ํธ ์ ์ ์ก function App (){ let [๊ธ์ ๋ชฉ, ๊ธ์ ๋ชฉ๋ณ๊ฒฝ] = useState(['๋จ์์ฝํธ ์ถ์ฒ', '๊ฐ๋จ ์ฐ๋๋ง์ง', 'ํ์ด์ฌ๋ ํ']); return ( ) } fun.. ๋ฐ๋ณต๋๋ ์์ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ (map, for) 1. ์๋ฐ์คํฌ๋ฆฝํธ map ํจ์ ๊ธฐ๋ฅ 1. array์ ๋ค์ด์๋ ์๋ฃ๊ฐฏ์๋งํผ ๊ทธ ์์ ์๋ ์ฝ๋๋ฅผ ๋ฐ๋ณต์คํํด์ค๋๋ค. var ์ด๋ ์ด = [2,3,4]; ์ด๋ ์ด.map(function(){ console.log(1) }); => console.log(1) 3๋ฒ ์คํ๋จ ๊ธฐ๋ฅ 2. ์ฝ๋ฐฑํจ์์ ํ๋ผ๋ฏธํฐ ์๋ฌด๋ ๊ฒ๋ ์๋ช ํ๋ฉด ๊ทธ ํ๋ผ๋ฏธํฐ๋ ์ด๋ ์ด ์์ ์๋ ๋ชจ๋ ์๋ฃ๋ฅผ ํ๋์ฉ ์ถ๋ ฅํด์ค๋๋ค. (๊ทธ๋ฅ ์๊ดํธ์์ ์๋ ํจ์๋ฅผ ์ฝ๋ฐฑํจ์๋ผ๊ณ ํฉ๋๋ค) var ์ด๋ ์ด = [2,3,4]; ์ด๋ ์ด.map(function(a){ console.log(a) }); => 2, 3, 4๊ฐ ์ฝ์์ฐฝ์ ์ถ๋ ฅ๋จ ๊ธฐ๋ฅ3. return ์ค๋ฅธ์ชฝ์ ๋ญ ์ ์ผ๋ฉด array๋ก ๋ด์์ค๋๋ค. var ์ด๋ ์ด = [2,3,4]; var newArray = ์ด๋ ์ด.ma.. React ์ปดํฌ๋ํธ ๋ฆฌ์กํธ์์ ๋์ ์ธ UI ๋ง๋๋ ๋ฐฉ๋ฒ 1. html css๋ก ๋ฏธ๋ฆฌ UI ๋์์ธ์ ๋ค ํด๋๊ณ 2. UI์ ํ์ฌ ์ํ๋ฅผ state๋ก ์ ์ฅํด๋๊ณ 3. state์ ๋ฐ๋ผ์ UI๊ฐ ์ด๋ป๊ฒ ๋ณด์ผ์ง ์กฐ๊ฑด๋ฌธ ๋ฑ์ผ๋ก ์์ฑ step 1. html css๋ก ๋ฏธ๋ฆฌ ๋์์ธํด๋๊ธฐ ์ ๋ชฉ ๋ ์ง ์์ธ๋ด์ฉ step 2. UI์ ํ์ฌ ์ํ๋ฅผ state๋ก ์ ์ฅ state ํ๋ ๋ง๋ค๊ณ ๊ฑฐ๊ธฐ์ ํ์ฌ UI์ ์ํ์ ๋ณด๋ฅผ ์ ์ฅ let [modal, setModal] = useState(false); let [modal, setModal] = useState('๋ซํ'); let [modal, setModal] = useState(0); step 3. state์ ๋ฐ๋ผ์ UI๊ฐ ์ด๋ป๊ฒ ๋ณด์ผ์ง ์์ฑ function App (){ let [modal, se.. ์ ๊น ์ฌ์ฉํ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ๋ฒ 2๊ฐ์ง 1. ๋ณ์ ์ด์ฉ import { useState } from 'react'; function App() { let post = '๋ถ์ ๋ชฉ'; return ( {post} //๋ณ์๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ ); } 2. state ์ด์ฉ import { useState } from 'react'; //import {useState} function App() { let [a,b] = useState('์ ๊น ์ ์ฅํ ๋ฐ์ดํฐ'); //useState(๋ณด๊ดํ ์๋ฃ) return ( { a } //a:๋ณด๊ดํ๋ ์๋ฃ, b:state๋ณ๊ฒฝ๋์์ฃผ๋ ํจ์ ); } React ํ๋ก์ ํธ ์์ฑ + JSX๋ฌธ๋ฒ React ์ค์น·์คํ ์ผ๋ฐ์ ์ผ๋ก create react app์ด๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด์ ํ๋ก์ ํธ๋ฅผ ์์ฑํ๋๊ฒ ์ผ๋ฐ์ ์ด๋ค. 1) ํ๋ก์ ํธ ์์ฑ reactํ๋ก์ ํธ๋ฅผ ์์ฑํ ํด๋์ ๋ค์ ๋ช ๋ น์ด ์ ๋ ฅํ๋ค. npx create-react-app blog 2) ์์ฑ๋ ํ๋ก์ ํธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์คํํ๋ ค๋ฉด terminal์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค. npm start //localhost:3000 JSX 1) JSX(JavaScript XML)๋? - JSX๋ Javascript์ XML์ ์ถ๊ฐํ ํ์ฅํ ๋ฌธ๋ฒ์ด๋ค. - JSX๋ ๋ฆฌ์กํธ๋ก ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ ๋ ์ฌ์ฉ๋๋ฏ๋ก ๊ณต์์ ์ธ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ ์๋๋ค. - ๋ธ๋ผ์ฐ์ ์์ ์คํํ๊ธฐ ์ ์ ๋ฐ๋ฒจ์ ์ฌ์ฉํ์ฌ ์ผ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ ํํ์ ์ฝ๋๋ก ๋ณํ๋๋ค. // ์ค์ ์์ฑํ JSX.. ์ด์ 1 2 3 4 5 ยทยทยท 7 ๋ค์