์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ์๋ฐ์คํฌ๋ฆฝํธ
- database
- ๊ฐ๋ฐ
- ์๋ฐ
- ์ค๋ธ์
- ์นํ์ด์ง๋ง๋ค๊ธฐ
- ๋ฐ์ํ
- ๊น๋ฏธ๊ฒฝ์๋งํ์์
- K๋ฐฐํฐ๋ฆฌ๋ ๋ณผ๋ฃจ์
- Java
- ComputerScience
- ๋ผํ๋ผ์ค์๋ง๋
- ์นํผ๋ธ๋ฆฌ์ฑ
- ํ์ด์ฌ
- ์ฝ๋ฉ
- JavaScript
- css
- ๋ง์ผ๋ด๊ฐ์ธ์์๋ค์์ฐ๋ค๋ฉด
- Python
- ์ปดํจํฐ๊ณผํ
- ์ฑ
- ์ค๋ผํด
- K๋ฐฐํฐ๋ฆฌ
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ํ๋ก๊ทธ๋๋ฐ
- ๋ ์
- ๋ฆฌ์กํธ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- html
- ์ํ
- Today
- Total
JiYoung Dev ๐ฅ
[React] React ๊ฐ์ ๋ฐ ์ค์น, JSX ๋ฌธ๋ฒ (2023.05.15) ๋ณธ๋ฌธ
[React] React ๊ฐ์ ๋ฐ ์ค์น, JSX ๋ฌธ๋ฒ (2023.05.15)
Shinjio 2023. 5. 16. 01:53๐ ๋ฆฌ์กํธ๋?
์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋
ํ๋ ์์ํฌ์ ์ธ ์ฑ๊ฒฉ์ ๋๊ณ ์์
๐ ๋ฆฌ์กํธ๋ฅผ ์ฌ์ฉํ๋ ์ด์
์๋ฐ์คํฌ๋ฆฝํธ๋ง์ผ๋ก๋ ๋ถ์กฑํ๋๊น!
๐ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋จ์
1. HTML๊ณผ JS๊ฐ ๊ฐ์ง ๋ถ๋ฆฌ๊ฐ
- JS์์ HTML์ ์ ๊ทผํ๊ธฐ ์ํด์๋ document. ์ผ๋ก ์ ๊ทผํด์ผ ํจ
> ๊ด๋ จ์๋ HTML, JS ๋ฌธ์๋ค์ JSX๋ก ํฉ์ณ์ค!
2. ์ง๊ด์ ์ด์ง๋ง ๋๋ฌด ๊ธด ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ
3. ์ ํ์ด์ง๋ฅผ ๋ค์ด๊ฐ ๋๋ง๋ค ์๋ก๊ณ ์นจ
- ์ฌ์ฉ์๊ฐ ํผ๋ก๋๋ฅผ ๋๋ผ๊ฒ ๋จ
> ์๋ก์ด ํ์ด์ง๋ ๋ฉ๋ด๋ฅผ ๋ค์ด๊ฐ๋ ์๋ก๊ณ ์นจ์ด ๋์ง ์์ ์ฌ์ฉ์์ ํผ๋ก๋๋ฅผ ์ค์ฌ์ค : Single Page Application(SPA)
๐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ vs ํ๋ ์์ํฌ
๊ฐ๋ฐ์ ๋์์ฃผ๋ ์ญํ ์ด์ง๋ง ๊ฐ๋ฐ์ ์ฃผ์ฒด๊ฐ ๋ค๋ฆ
๐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๊ฐ๋ฐ์ ์ฃผ์ฒด๋ ๋!
๊ธฐ๋ฅ๋ง ๊ฐ์ ธ๋ค ์ฌ์ฉํ๋ ๊ฒ
์์ ๋๊ฐ ๋๋ค
์ฅ์ - ๋ฒ์ ์ด ์ ๋ฐ์ดํธ ๋๋๋ผ๋ ์ด์ ๋ฒ์ ๊ณผ ํธํ์ด ์ ๋จ!
ex. ๋ฆฌ์กํธ - ํ๋ ์์ํฌ์ ์ฑ๊ฒฉ์ด ๊ฐํ์ง๋ง meta(๋ง๋ ํ์ฌ)์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๊ณ ์ ์ํจ
๐ ํ๋ ์์ํฌ
๊ฐ๋ฐ์ ์ฃผ์ฒด๋ ํ๋ ์์ํฌ!
์ ๊ณต๋ ํ ์์ผ๋ก ๋ค์ด๊ฐ ์ฃผ์ด์ง ๊ท์น์ ์ง์ผ๊ฐ๋ฉฐ ์ฌ์ฉํ๋ ๊ฒ
์์ ๋๊ฐ ๋ฎ๋ค
ex. ์ต๊ธ๋ฌ, ๋ทฐ
์ฅ์ - ์ฌ์ฉํ๊ธฐ ์ฝ๋ค
๋จ์ - ๋ฒ์ ์ด ์ ๋ฐ์ดํธ ๋๋ฉด ์ด์ ๋ฒ์ ๊ณผ ํธํ์ด ์๋๋ ๊ฒฝ์ฐ๊ฐ ์์
๐ ๋ฆฌ์กํธ์ ์ญ์ฌ
๋ฌธ์ ์ ๋ฆฌ๊ฐ ๊ต์ฅํ ์ ๋์ด ์์!
์ํํ ์ปค๋ฎค๋ํฐ ํ์ฑ >> ๋ค์ํ ๋ฌธ์ ์ ๊ณต(๊ณต์๋ฌธ์๋ ์ ๋ฆฌ๊ฐ ์ ๋์ด ์์)
์ฌ๋ฌ ์ฅ์ ์ผ๋ก ๊ณ์ํด์ React์ ์ธ๊ธฐ๋ ์์นํ๊ณ ์์
๋์ฒด์ ์ธ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ฆฌ์กํธ๋ก ๋ง๋ค์ด์ง
React Native๋ก ๋ชจ๋ฐ์ผ ์ดํ๋ฆฌ์ผ์ด์ ๊น์ง ์ ์ ๊ฐ๋ฅ
๐ React ์ค์น
๐ ์๋ฒ ํ๊ฒฝ Node.js ์ค์น
๐ ๋น์ฃผ์ผ ์คํ๋์ค ์ฝ๋ react ํ๋ก์ ํธ ์์ฑ
1. ๋ฐํํ๋ฉด ํน์ ๋ณธ์ธ์ด ๊ณผ๋ชฉ์ ๋ชจ์๋๋ ํด๋์ 'React' ๋ผ๋ ํด๋ ์์ฑ
2. Terminal -> new Terminal
3. ๋ฆฌ์กํธ ํ๋ก์ ํธ ์์ฑํ๊ธฐ
npx create-react-app project01
- npx : JS ํจํค์ง ๊ด๋ฆฌ ๋ชจ๋๋ก ํ์ํ ๊ธฐ๋ฅ์ ์ค์น ํ ์ ์๋ค.
- create-react-app : react ํ๋ก์ ํธ ์์ฑํด์ค๊ฒ์
- project01 : ํ๋ก์ ํธ ์ด๋ฆ
4. Happy Hacking!
Q. ๋ง์ฝ, npx๊ฐ ์๋๋ค?
1) cmd ์ฐฝ์ ์ผ์ node -v ํ์ธ
2) cmd ์ฐฝ์ ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅ - ํด๋ ์ฃผ์ ์ฐฝ ๊ทธ๋๋ก Ctrl + C (C:\Users\SMHRD\Desktop\React)
- cd : change directory
๐ ํ๋ก์ ํธ ์์ํ๊ธฐ
1. cd project01
2. npm start
Q.์ฐ๋ฆฌ์ ์๋ฒ?
A. Node ์๋ฒ
ํค๋ ๋ฐฉ๋ฒ์? npm start
- ์ค ์ ๋ ์๋ผ์... -> ํด๋ ์ค์ ์๋ชปํ๊ฑฐ project01 ๋ด๋ถ์์
Q. ์ ๋ ์๋ฒ๋ ์๊ป๋๋ฐ ํ๋ฉด๋ง ๊บผ๋ฒ๋ ธ์ด์
A. localhost:3000 ์ผ๋ก ๋ค์ด๊ฐ์๋ฉด
โ๏ธ ๊ตฌ์กฐ ๋ฏ์ด๋ณด๊ธฐ
โ๏ธ ๋๋ ํ ๋ฆฌ ๊ธฐ๋ณธ ๊ตฌ์กฐ
html(index.html)์ ํ๋ >> Single Page Application
App.js์์์ ๋ด์ฉ(JSX)๋ณ๊ฒฝ
์ ํ์ด์ง๋ฅผ ๋์ด๊ฐ ๋๋ง๋ค ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค์ง ์์๋ ๋๋ค>>์๋ก๊ณ ์นจ์ด ํ์์๋ค!
โ๏ธ App.js ๋ฌธ๋ฒ
JS์ HTML์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ JSX๊ตฌ์กฐ ๋ฅผ ์ฌ์ฉ!
>> ์๋ฐ์คํฌ๋ฆฝํธ์ HTML ํ์ผ์ ๋ถ๋ฆฌ๊ฐ์ด ์์ผ๋ฏ๋ก ๊ฐ๋ ์ฑ์ด ๋๊ณ ์์ฑํ๊ธฐ ์ฝ๋ค
โ๏ธ ๋ฌธ๋ฒ ์ฐจ์ด์
1.
์๋ฌธ์๋ก ์์ : HTML ํ๊ทธ
๋๋ฌธ์๋ก ์์ : ๋ด๊ฐ ๋ง๋ ํ๊ทธ
2.
className
3.
{} ํํ์์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ ์ฌ์ฉ
import './App.css';
function App() {
/*
JSX : ํ๋์ ํ์ผ ์์ HTML ๋ฌธ๋ฒ๊ณผ JS ๋ฌธ๋ฒ์ ๋์์ ์์ฑํ ์ ์๋ ํ์ผ ํ์ฅ์
>> ์ฅ์ : document ๊ฐ์ฒด์ ๋ณ๋๋ก ์ ๊ทผํ์ง ์์๋ ๋จ
๋ฐ๋ผ์ ๊ฐ๋
์ฑ์ด ์ข๊ณ ๊ธฐ๋ฅ๋ณ๋ก ๋ถ๋ฅํ๊ธฐ ์ฌ์
** ์ง์ผ์ผํ ๊ท์น!
1. ์ฌ๋ฌ ์์๊ฐ ์๋ค๋ฉด ๋ฐ๋์ ํ๋์ ๋ถ๋ชจ ์์๋ก ๊ฐ์ธ์ฃผ์ด์ผ ํจ
+) div๊ฐ ์๋์ด๋ ์๊ด์๋ค.
2. ํํ์ ์ฌ์ฉ ๊ฐ๋ฅ
: ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ return๋ฌธ ์๋ {} ์์์ ์ฌ์ฉํ ์ ์์
๋จ, ์ค๊ดํธ ๋ด์ ์ฌ์ฉํ ์ ์๋ค
>> ์กฐ๊ฑด์ด ํ๋ ์ผ ๋ - {} ์์ &&์ฐ์ฐ์ ์ฌ์ฉ
>> ์กฐ๊ฑด์ด ๋๊ฐ ์ผ ๋ - {} ์์ ์ผํญ์ฐ์ฐ์( ์กฐ๊ฑด ? ์คํ๋ฌธ1 : ์คํ๋ฌธ2)
>> ์กฐ๊ฑด์ด 3๊ฐ ์ด์์ผ ๋ - ์กฐ๊ฑด๋ฌธ์ ํํ์์ด ์๋ return ์์ชฝ์์ ์ฌ์ฉ
3. ๊ธฐ์กด html ๋ฌธ๋ฒ๊ณผ์ ์ฐจ์ด์
a. class ๋์ className ์ฌ์ฉ
b. htmlํ๊ทธ(DOM์์)๋ฅผ ์ฌ์ฉํ ๋๋ ๋ฌด์กฐ๊ฑด ์๋ฌธ์๋ก ์์
๋๋ฌธ์๋ ๋ฐ๋ก ์ธ ์ผ์ด ์์!
c. content๊ฐ ์๋๋ผ๋ ๋ํ๊ทธ๋ฅผ ์๋ตํ ์ ์๋ค! < />
4. ์คํ์ผ๋ง ์ ์ฉ
a. css์์ ์์ฑ
- import ๋์ด ์๋ css์ ์ฝ์
b. ๊ฐ์ฒด ํํ๋ก ์์ฑ
- ๊ฐ์ฒด ํํ๋ก ์ํ๋ ์คํ์ผ์ ์์ฑํ ํ ์ํ๋ ํ๊ทธ ์คํ์ผ ์์ฑ์ผ๋ก ๊ฐ์ฒด ์
๋ ฅ
๋จ, ๊ฐ์ฒด ์์์๋ camelCase๋ก ์์ฑํด์ผํจ
(ex. background-color => backgroundColor)
*/
const textStyle = {
color : 'blue',
fontWeight : '900'
}
let name = '๊ฐ์์ง'
let state = 'close'
// 3. ์กฐ๊ฑด๋ฌธ์ด 3๊ฐ ์ด์์ผ ๋
let text = ""
if(name === '๊ฐํ์ฐ'){
text = "DB";
}else if(name === "์ ์ํ"){
text = "ํ๋ก ํธ์๋";
}else{
text = "๋ฐฑ์๋";
}
// index.js์ ์๋ React.StrictMode๋ฅผ ์ผ ๋์ผ๋ฉด ์ฝ๋๊ฐ ๋๋ฒ์ฉ ์คํ๋จ! (๋ณด์๋๋ฌธ)
console.log('ํ์ฌ ๋ฐฉ๋ฌธํ ์ฌ๋์' , name);
return (
<div className='container'>
<p style={textStyle}>์ง์๋์ ๋ฆฌ์กํธ ํํ์ด์ง์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค!</p>
{/* ์กฐ๊ฑด์ด ํ๋์ผ ๋ */}
{/* {state === 'open' && <p>{name}๋ ๋ฐ๊ฐ์ต๋๋ค!</p>} */}
{/* ์กฐ๊ฑด์ด ๋๊ฐ์ผ ๋ */}
{/* {name === '๊ฐ์์ง' ? <p>ํ์ํฉ๋๋ค!</p> : <p>์ฃ์กํฉ๋๋ค. ์ด์ฉํ์ค ์ ์์ต๋๋ค.</p>} */}
{/* ์กฐ๊ฑด์ด 3๊ฐ ์ด์์ผ ๋ */}
{text}
</div>
);
}
export default App;
์ค์ต
function AppExample(){
/*
(1) ์ฌ์ฉ์์๊ฒ ์ด๋ฆ์ ์
๋ ฅ๋ฐ์์ค๋ค. - prompt
(2) ํ์ฌ ๋ ์ง๋ฅผ ๊ฐ์ง๊ณ ์ฌ ๊ฒ
(3) ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ณ์ ์ ๋ถ๋ฅ
- 3์ ~ 5์ : ๋ด
- 6์ ~ 8์ : ์ฌ๋ฆ
- 9์ ~ 11์ : ๊ฐ์
- 12์ ~ 2์ : ๊ฒจ์ธ
(4)
2023-05-15 => h1ํ๊ทธ
์ํ
XXX๋ ์ง๊ธ์ ๋ด์
๋๋ค. ์ข์ ํ๋ฃจ ๋ณด๋ด์ธ์! :)
*/
// (2) ํ์ฌ ๋ ์ง ๊ฐ์ง๊ณ ์ค๊ธฐ
let today = new Date();
console.log('today :', today);
// a. ์ฐ๋ - ์ - ์ผ๋ง ๋ฐ ๋ฐํ : .tolocalDateString
let date = today.toLocaleDateString();
console.log(date);
// b. ์ ๋ฐํ : .getMonth()
let month = today.getMonth() + 1;
console.log(month);
let name = prompt('์ด๋ฆ์ ์
๋ ฅํ์ธ์!');
let season = '';
if(month<3 || month === 12){
season = "๊ฒจ์ธ"
}else if(month<6){
season = "๋ด"
}else if(month<9){
season = "์ฌ๋ฆ"
}else{
season = "๊ฐ์"
}
return(
<div>
<h1>{date}</h1>
<hr />
<p>{name}๋ ์ง๊ธ์ {season}์
๋๋ค. ์ข์ํ๋ฃจ ๋ณด๋ด์ธ์! :)</p>
</div>
)
}
export default AppExample
์ ๋ฆฌ
React
์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ํ๋,
ํ๋ ์์ํฌ์ ์ธ ์ฑ๊ฒฉ์ ๋๊ณ ์์ต๋๋ค.
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ vs ํ๋ ์์ํฌ
์ฃผ์ฒด ๋ ์ฃผ์ฒด ํ๋ ์์ํฌ
- ์๋ก๊ณ ์นจ์ด ์ผ์ด๋์ง ์๋๋ค.
Single Page Application
- npx create-react-app ํ๋ก์ ํธ๋ช
React ํ๋ก์ ํธ ์์ฑ
index.html => Single Page
index.js => ๋งํฌ! ์ฐ๊ฒฐ
App.js => ๋ด๊ฐ ์ค์ง์ ์ผ๋ก ์์
-> ํ์ฅ์ : JSX JS + HTML
HTML ๋ฌธ๋ฒ ์์ JS ๋ฌธ๋ฒ์ ์ฐ๋ ค๋ฉด? {}
=> ํํ์ if๋ฌธ ์ฌ์ฉ ๋ถ๊ฐ
=>์กฐ๊ฑด๋ฌธ? 1 && ์ฐ์ฐ์
=> ์กฐ๊ฑด 2 ์ผํญ์ฐ์ฐ์
=> ์กฐ๊ฑด 3๊ฐ ์ด์ return() ์์ if๋ฌธ์ผ๋ก ์์ฑ
- React project๋ฅผ ์คํ
npm start
=> localhost:3000
'full stack > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[React] useRef (2023.05.24) (0) | 2023.05.24 |
---|---|
[React] To-do List ๋ง๋ค๊ธฐ (2023.05.23) (0) | 2023.05.24 |
[React] context API (2023.05.22) (0) | 2023.05.22 |
[React] React ๋ณต์ต (๊ฐ๋ ~ context API๊น์ง) (2023.05.22) (0) | 2023.05.22 |
[React] Component, Props, State (2023.05.16) (0) | 2023.05.16 |