โ๏ธ ์์ ์ ์ ์๋ก์ด ๋ฆฌ์กํธ ํ๋ก์ ํธ ์์ฑ! ์๋ ์ฐธ๊ณ .
[ ์ฝ๋ฉ์ ํ ] React ๋ฆฌ์กํธ ๊ธฐ์ด Part1
โ๏ธ ๊ฐ๋ฐํ๊ฒฝ ์ค์น ๋ฐ ์ธํ 1. ๊ตฌ๊ธ์ Nodejs๋ฅผ ๊ฒ์ํด์ LTS๋ผ๊ณ ์จ์๋ ๋ฒ์ ์ ์ค์น 2. Visual Studoi Code ์๋ํฐ ์ค์น โ๏ธ ๋ฆฌ์กํธ ํ๋ก์ ํธ ์์ฑ 1. ์์ ์ฉ ํด๋ ๋ง๋ค๊ธฐ(์ฐพ๊ธฐ ์ฝ๊ฒ ๋ฐํํ๋ฉด์ ๋ง๋ค๊ธฐ
jaejae-sosp.tistory.com
โ๏ธ React-Bootstrap ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น ๋ฐ ์ฌ์ฉ
- react bootstrap ์ฌ์ฉํ๋ฉด ๋ฒํผ, ๋ฉ๋ด์ ์ ์ฉ๋๋ html, css ์ง์ ๋์์ธํ์ง ์์๋ ๋๋ค..!
โ๏ธ ์ค์น
1. ์๋ํฐ์์ ํฐ๋ฏธ๋ ์ด๊ณ ์๋ ์ฝ๋ ์
๋ ฅ
npm install react-bootstrap bootstrap
2. ์ด๋ค ์คํ์ผ์ Bootstrap CSS ํ์ผ์ ์๊ตฌํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค
- ๊ทธ๋์ ๊ทธ๋ฅ ๊ทธ ์ฌ์ดํธ์ ์๋ CSS ํ์ผ์ index.html ํ์ผ์ <head> ํ๊ทธ ์์ ๋ณต๋ถ
- ๊ธธ์ด์ ์ซ์ผ๋ฉด App.js์ import 'bootstrap/dist/css/bootstrap.min.css'; ์ด๋ ๊ฒ ์ง์ด๋ฃ์ด๋ ๋จ
โ๏ธ React-Bootstrap ์ฌ์ฉ๋ฒ
- ์๋ฅผ ๋ค์ด ๋ฒํผ์ด ํ์ํ๋ฉด React-Bootstrap ์ฌ์ดํธ์์ ๊ฒ์ํด์ ์์ ์ฝ๋๋ฅผ ๋ณต๋ถํ๋ฉด ๋ฒํผ ์์ฑ ๋์ด๋ค.
import {Button} from 'react-bootstrap'
function App(){
return (
<div>
<Button variant="primary">Primary</Button> <!-- ํ๋ ๋ฒํผ ์์ฑ -->
</div>
)
}
- ์๋จ๋ฉ๋ด๋ฐ ์์
import {Button, Navbar, Container, Nav} from 'react-bootstrap'
function App(){
return (
<div>
<Navbar bg="dark" variant="dark">
<Container>
<Navbar.Brand href="#home">Navbar</Navbar.Brand>
<Nav className="me-auto">
<Nav.Link href="#home">Home</Nav.Link>
<Nav.Link href="#features">Features</Nav.Link>
<Nav.Link href="#pricing">Pricing</Nav.Link>
</Nav>
</Container>
</Navbar>
</div>
)
}
๐โ๏ธ ๋๋ฌธ ๋ง๋ค๊ธฐ
- ๋ฉ์ธ ํ์ด์ง์ ํฐ ์ด๋ฏธ์ง๋ฅผ ๋ฃ์ด๋ณด์
(App.css)
.main-bg {
height : 300px;
background-image : url('./bg.png');
background-size : cover;
background-position : center;
}
- css ํ์ผ์์ src ํด๋์์ ์๋ ์ฌ์ง์ ์ฌ์ฉํ๊ณ ์ถ์ผ๋ฉด ./์ด๋ฏธ์ง๊ฒฝ๋ก ์ฌ์ฉํ๋ฉด ๋๋ค.
โ๏ธ html ์์ src ํด๋์ ์ด๋ฏธ์ง๋ฅผ ๋ฃ๊ณ ์ถ์ผ๋ฉด
- ์ด๋ฏธ์ง๋ฅผ import ํด์ค๊ณ ์ฌ์ฉํด์ผ ํ๋ค.
import bg from './bg.png' // import ์๋ช
from './์ด๋ฏธ์ง๊ฒฝ๋ก'
function App(){
return (
<div>
<div className="main-bg" style={{ backgroundImage : 'url(' + bg + ')' }}></div>
</div>
)
}
- ์ด๋ฏธ์ง๊ฒฝ๋ก๊ฐ ํ์ํ ๊ณณ์์ ์๋ช ํ ๊ฑธ ์ฌ์ฉํด๋ ๋๋ค. <img>ํ๊ทธ๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ผ๋ฉด <img src={bg}/> ์ด๋ ๊ฒ ์จ๋ ๋ณด์ธ๋ค.
โ๏ธ ํ๋ฉด์ ๊ฐ๋ก๋ก 3๋ฑ๋ถํ๊ณ ์ถ์ผ๋ฉด
<div className="container">
<div className="row">
<div className="col-md-4">์๋
</div>
<div className="col-md-4">์๋
</div>
<div className="col-md-4">์๋
</div>
</div>
</div>
๐โ๏ธ ์ผํ๋ชฐ ์ํ 3๊ฐ ์ง์ด
function App(){
return (
<div className="App">
(Navbar์ ๋๋ฌธ์ ์๋ต)
<div className="container">
<div className="row">
<div className="col-md-4">
<img src="https://codingapple1.github.io/shop/shoes1.jpg" width="80%" />
<h4>์ํ๋ช
</h4>
<p>์ํ์ ๋ณด</p>
</div>
<div className="col-md-4">
<img src="https://codingapple1.github.io/shop/shoes2.jpg" width="80%" />
<h4>์ํ๋ช
</h4>
<p>์ํ์ ๋ณด</p>
</div>
<div className="col-md-4">
<img src="https://codingapple1.github.io/shop/shoes3.jpg" width="80%" />
<h4>์ํ๋ช
</h4>
<p>์ํ์ ๋ณด</p>
</div>
</div>
</div>
</div>
)
}
โ๏ธ public ํด๋์ ์ฉ๋
- ์ฌ๋ฌ๊ฐ์ง ์์ค์ฝ๋๋ src ํด๋์ ๋ณด๊ดํ๋ฉด ๋๋๋ฐ ์ด๋ฏธ์ง๊ฐ์ state ํ์ผ์ ๊ฒฝ์ฐ public ํด๋์ ๋ณด๊ดํด๋ ๋๋ค
- ๋ฆฌ์กํธ๋ก ๊ฐ๋ฐ์ ๋๋ด๋ฉด build ์์
์ด๋ผ๋๊ฑธ ํ๋๋ฐ ์ง๊ธ๊น์ง ์งฐ๋ ์ฝ๋๋ฅผ ํ ํ์ผ๋ก ์์ถํด์ฃผ๋ ์์
์ด๋ค
- src ํด๋์ ์๋ ์ฝ๋์ ํ์ผ์ ๋ค ์์ถ์ด ๋๋๋ฐ public ํด๋์ ์๋ ๊ฒ๋ค์ ๊ทธ๋๋ก ๋ณด์กดํด์ค๋ค.
- ๊ทธ๋์ ํํ๋ฅผ ๋ณด์กดํ๊ณ ์ถ์ ํ์ผ์ public ํด๋์ ๋ฃ์ผ๋ฉด ๋๋๋ฐ ์๋ฅผ ๋ค๋ฉด ์ด๋ฏธ์ง, txt, json ๋ฑ๊ณผ ๊ฐ์ด ์์ ์ด ํ์์๋ static ํ์ผ๋ค์ด ๊ทธ ๊ฒฝ์ฐ์ด๋ค.
โ๏ธ public ํด๋์ ์๋ ์ด๋ฏธ์ง ์ฌ์ฉํ ๋
<img src="/logo192.png" /> <!-- /์ด๋ฏธ์ง ๊ฒฝ๋ก -->
<!-- ๊ถ์ฅ ๋ฐฉ์ -->
<img src={process.env.PUBLIC_URL + '/logo192.png'} />
<!--
๋ฆฌ์กํธ๋ก ๋ง๋ html ํ์ด์ง๋ฅผ ๋ฐฐํฌํ ๋ codingapple.com/์ด์ฉ๊ตฌ/ ๊ฒฝ๋ก์ ๋ฐฐํฌํ๋ฉด
/logo192.png ์ด๋ ๊ฒ ์ฐ๋ฉด ํ์ผ์ ์ฐพ์ ์ ์๋ค๊ณ ๋์ฌ ์๋ ์์.
๊ทธ๋์ /์ด์ฉ๊ตฌ/ ๋ฅผ ๋ปํ๋ process.env.PUBLIC_URL ์ด๊ฒ๋ ๋ํด์ฃผ๋ฉด ๋จ.
-->
- ๊ทธ๋์ ํ์ด์ง์ ์ด๋ฏธ์ง 100์ฅ์ ๋ฃ์ด์ผํ๋ ๊ฒฝ์ฐ, public ํด๋์ ๋ฃ์ผ๋ฉด import 100๋ฒ ์ํด๋ ๋จ! ํธ๋ฆฌ!
โ๏ธ export default / import ๋ฌธ๋ฒ
๐โ๏ธ ํ์ํ ์ํ ๋ฐ์ดํฐ
[
{
id : 0,
title : "White and Black",
content : "Born in France",
price : 120000
},
{
id : 1,
title : "Red Knit",
content : "Born in Seoul",
price : 110000
},
{
id : 2,
title : "Grey Yordan",
content : "Born in the States",
price : 130000
}
]
- ์ค์ ์๋น์ค์์ผ๋ฉด ์๋ฒ์์ ๋ฐ์์ด!
โ๏ธ export default / import ๋ฌธ๋ฒ
- ์์ ์๋ ์ํ ์ ๋ณด๋ฅผ useState() ์์ ๋ฃ๊ธฐ์ ๋๋ฌด ๊ธธ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ํ์ผ์ ๋ณด๊ดํ๋ค๊ฐ importํด์ ์ฌ์ฉํ ์ ์๋ค
- ์๋ฅผ ๋ค์ด data.js๋ผ๋ ํ์ผ์ ์๋ ๋ณ์๋ฅผ App.js์์ ๊ฐ์ ธ์์ ์ฐ๊ณ ์ถ์ผ๋ฉด
// data.js ํ์ผ
let a = 10;
export default a;
- export default ๋ณ์๋ช : ์ด๋ ๊ฒ ์ฐ๋ฉด ์ํ๋ ๋ณ์๋ฅผ ๋ฐ์ผ๋ก ๋ด๋ณด๋ผ ์ ์๋ค
// App.js ํ์ผ
import a from './data.js';
console.log(a)
- export ํ๋ ๋ณ์๋ฅผ ๋ค๋ฅธ ํ์ผ์์ ์ฌ์ฉํ๊ณ ์ถ์ผ๋ฉด import ์๋ช from './ํ์ผ๊ฒฝ๋ก'ํ๋ฉด ๋๋ค.
- ์ ์์ !
- ๋ณ์, ํจ์, ์๋ฃํ ๋ชจ๋ export ๊ฐ๋ฅ
- ํ์ผ๋ง๋ค export default ๋ผ๋ ํค์๋๋ ํ๋๋ง ์ฌ์ฉ ๊ฐ๋ฅ
- ํ์ผ ๊ฒฝ๋ก๋ ./ ๋ถํฐ ์์ํด์ผํ๋ค. ํ์ฌ๊ฒฝ๋ก๋ผ๋ ๋ป
โ๏ธ export { } / import { } ๋ฌธ๋ฒ
- ์ฌ๋ฌ๊ฐ์ ๋ณ์๋ค์ ๋ด๋ณด๋ด๊ณ ์ถ์ผ๋ฉด ์๋์ ๊ฐ์ ๋ฌธ๋ฒ ์ฌ์ฉ
// data.js ํ์ผ
var name1 = 'Kim';
var name2 = 'Park';
export { name1, name2 }
- ๊ทธ๋ผ ์ํ๋ ๋ณ์, ํจ์ ๋ฑ์ ์ฌ๋ฌ๊ฐ ๋ด๋ณด๋ผ ์ ์๋ค.
// App.js ํ์ผ
import { name1, name2 } from './data.js';
- export {} ์ด๊ฑธ๋ก ๋ด๋ณด๋์ผ๋ฉด ๊ฐ์ ธ๋ค๊ฐ ์ธ ๋ import {} ๋ฌธ๋ฒ ์ฌ์ฉ
- ์ ์์ !
- export {} ํ๋ ๊ฒ๋ค์ import {} ์ธ ๋ ์์ ์๋ช
์ด ๋ถ๊ฐ๋ฅํจ. export ํ๋ ๋ณ์๋ช
๊ทธ๋๋ก ์ ์ด์ผ ํจ.
๐โ๏ธ ์ํ ๋ฐ์ดํฐ ๋ค๋ฅธ ํ์ผ์ ์ ์ฅํด๋ณด๊ธฐ
// data.js ํ์ผ
let data = [
{
id : 0,
title : "White and Black",
content : "Born in France",
price : 120000
},
{
id : 1,
title : "Red Knit",
content : "Born in Seoul",
price : 110000
},
{
id : 2,
title : "Grey Yordan",
content : "Born in the States",
price : 130000
}
] ;
export default data
// App.js ํ์ผ
import data from './data.js';
function App(){
let [shoes] = useState(data);
return (
<div className="App">
(์๋ต)
<div className="container">
<div className="row">
<div className="col-md-4">
<img src="https://codingapple1.github.io/shop/shoes1.jpg" width="80%" />
<h4>{ shoes[0].title }</h4>
<p>{ shoes[0].price }</p>
</div>
<div className="col-md-4">
<img src="https://codingapple1.github.io/shop/shoes2.jpg" width="80%" />
<h4>์ํ๋ช
</h4>
<p>์ํ์ ๋ณด</p>
</div>
<div className="col-md-4">
<img src="https://codingapple1.github.io/shop/shoes3.jpg" width="80%" />
<h4>์ํ๋ช
</h4>
<p>์ํ์ ๋ณด</p>
</div>
</div>
</div>
</div>
)
}
}
๋ณธ ํฌ์คํ ์ << React ๋ฆฌ์กํธ ๊ธฐ์ด๋ถํฐ ์ผํ๋ชฐ ํ๋ก์ ํธ๊น์ง! >> ๊ฐ์๋ฅผ ์ฐธ๊ณ ํฉ๋๋ค.
'Frontend ๐ > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฝ๋ฉ์ ํ] ์ผํ๋ชฐ ํ๋ก์ ํธ Part3 - Styled Components (0) | 2023.10.17 |
---|---|
[์ฝ๋ฉ์ ํ] ์ผํ๋ชฐ ํ๋ก์ ํธ Part2 - ์ปดํฌ๋ํธ, ๋ฆฌ์กํธ ๋ผ์ฐํฐ, usenavigate() (0) | 2023.10.17 |
[ ์ฝ๋ฉ์ ํ ] React ๋ฆฌ์กํธ ๊ธฐ์ด Part5 (1) | 2023.10.14 |
[ ์ฝ๋ฉ์ ํ ] React ๋ฆฌ์กํธ ๊ธฐ์ด Part4 (0) | 2023.10.14 |
[ ์ฝ๋ฉ์ ํ ] React ๋ฆฌ์กํธ ๊ธฐ์ด Part3 (0) | 2023.10.14 |