๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป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..