ํ์ด์ค๋ถ์ด ๊ฐ๋ฐํ ํจํค์ง ๊ด๋ฆฌ์๋ก, npm๊ณผ๋ ๋๋ค๋ฅธ ํจํค์ง ๊ด๋ฆฌ์์ด๋ค. ๋ฆฌ์กํธ์ ๋๋ถ๋ถ์ yarn์ ํ ๋๋ก ๊ฐ๋ฐ์ด ์ด๋ฃจ์ด์ง๊ณ ์์.
๋น๋ ์๋๊ฐ ๋น ๋ฅธ vite๋ esbuild๋ผ๋ ๋ฒ๋ค๋ฌ๋ฅผ ์ฌ์ฉํด์ ๊ธฐ์กด์ ๋ฐฉ์์ ๋นํด ํจ์ฌ ๋ ๋น ๋ฅธ ๋ฒ๋ค๋ง ์๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
yarn create vite (์ฑ์ด๋ฆ) --template react
๋ผ๋ ๋ช
๋ น์ด๋ก ์์!
์ฃผ์:: ์ฑ์ด๋ฆ ์์์ yarn ์์ํด์ผ ํจ! ํด๋๋ช
์ ํ์ธํ๋๋ก!
๋ฒ ๋ฆฌ๊ตฟ.
react์์ ์ฐ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ฅ ๋ฌธ๋ฒ, ์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํ ์ ์๋๋ก ํ๋ ๋ฌธ๋ฒ์ด๋ค. html์ฝ๋๋ Html ํ์ผ ์์, js ์ฝ๋๋ js ํ์ผ์์ ์ฐ๋ ์ด์ ๊ณผ ๋ค๋ฅด๊ฒ, ์ด์ ๋ js ํ์ผ ์์ ์๋ฐ์คํฌ๋ฆฝํธ์ html ๋ชจ๋๋ฅผ ์ฌ ์ ์๋ค!
<div></div>
์๋๋ผ <></>
๊ฐ์ด ๋นํ๊ทธ์ฌ๋ ๊ฐ๋ฅ.function App(){
const name='์ดํ์'
return (
<div>{name}</div>
)
}
function App(){
return (
<div className="App">
</div>
)
}
export default App;
์ค์ํ ๋ฐ์ดํฐ๋ ๋ณ์๋ง๊ณ state์ ๋ด๋๋ค.
์๊ฐํด๋ณด๋ฉด ๋ณ์์ ๋ด์ผ๋ state์ ๋ด์ผ๋ ๊ทธ๊ฒ ๊ทธ๊ฑฐ ๊ฐ์๋ฐ ์ state๋ฅผ ์ฐ๋๊ฑธ๊น?
state๋ ๋ณ๋์ฌํญ์ด ์๊ธฐ๋ฉด state๋ฅผ ์ฐ๋ html๋ ์๋์ผ๋ก ์ฌ๋ ๋๋งํด์ค๋ค.
๊ฒฐ๋ก : ์ด์ฉ์์๊ฒ ํ์๋๋ ๊ฐ์ด ์ํธ์์ฉ์ ๋ฐ๋ผ ๋ณ๊ฒฝ๋ ์ ์๋๋ก ํ๊ธฐ ์ํด์๋ useState ๊ฐ ๊ผญ ํ์ํ๋ค!
๊ฐ๋ฐ์์๊ฒ๋ ๊ทธ๋ฅ ์ฉ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ณ์์ ๋ด์๋จ์ผ๋ฉด "๋ณ์์ ๋ด์๋์ ๋ด์ฉ ๋ฐ๋์์ผ๋, html๋ ๊ณ ์ณ๋ฌ๋ผ"๊ณ ์ฝ๋๋ฅผ ์งฐ์ด์ผํ๋ ๋ถํธํจ์ด ์ฌ๋ผ์ง๊ฒ ๋ ๊ฒ!!
- import {useState} from 'react'
- let [a,b] = useState(a์ ์ด๊ธฐ๊ฐ)
a์๋ฆฌ์ ๋ณด๊ดํ state์ด๋ฆ์ ์์ ๋กญ๊ฒ ์๋ช ํ ๋ค์ ๋์ค์ ์์ ๋กญ๊ฒ ์ฌ์ฉํ๋ฉด ๋๋ค.
๊ฒฐ๋ก ! ์์ฃผ ๋ณ๊ฒฝํ ๊ฒ ๊ฐ์ ๋ฐ์ดํฐ๋ค์ state๋ค์ html์ {๋ฐ์ดํฐ๋ฐ์ธ๋ฉ}ํด๋๊ธฐ
๊ตณ์ด ๋ณ๊ฒฝํ ์ผ์ด ์๋๊ฑด ์ผ๋ฐ ๋ณ์์ ์ ์ฅํด๋ ๋๋ค!
state ์์ฑ, {๋ฐ์ดํฐ๋ฐ์ธ๋ฉ} ๐
import "./App.css";
import {useState} from "react";
function App(){
let [์ปคํผ,์ปคํผ๋ณ๊ฒฝ]=useState('์๋ฉ๋ฆฌ์นด๋
ธ')
return (
<div className="App">
<h4>{์ปคํผ}</h4>
</div>
)
}
export default App;
ํ์ํ๋งํผ state ์์ฑ ๐
import "./App.css";
import {useState} from "react";
function App(){
let [์ปคํผ,์ปคํผ๋ณ๊ฒฝ]=useState('์๋ฉ๋ฆฌ์นด๋
ธ')
let [์ปคํผ2,์ปคํผ๋ณ๊ฒฝ2]=useState('์นดํ๋ผ๋ผ')
return (
<div className="App">
<h4>{์ปคํผ}</h4>
<h4>{์ปคํผ2}</h4>
</div>
)
}
export default App;
๋ฐฐ์ด destructuring ๐
import "./App.css";
import {useState} from "react";
function App(){
let [์ปคํผ,์ปคํผ๋ณ๊ฒฝ]=useState(['์๋ฉ๋ฆฌ์นด๋
ธ','์นดํ๋ผ๋ผ'])
return (
<div className="App">
<h4>{์ปคํผ[0]}</h4>
<h4>{์ปคํผ[1]}</h4>
</div>
)
}
export default App;
onClick={}
์ด๋ ๊ฒ C๋ ๋๋ฌธ์๋ก ์ฐ๊ณ , {}์ ์ฌ์ฉํด {} ์์ ์คํํ ํจ์๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
function App(){
let [์ข์์]=useState(0)
function ์ข์์๋ณ๊ฒฝ(){
console.log(1)}
return (
<div>
<div onClick={์ข์์๋ณ๊ฒฝ}>{์ข์์}</div>
// ์๋๋ฉด ์์์ ํจ์ ๋ง๋ค ํ์ ์์ด
// ๋ฐ๋ก ์ด ์์์ ํ์ดํ ํจ์ ์ฌ์ฉํ๋๊ฒ๋ ๊ฐ๋ฅ!
// onClick={()=>{console.log(1)}}
</div>
)
}
let [๋ณด๊ดํ state์ด๋ฆ, state๋ณ๊ฒฝํจ์์ด๋ฆ]=useState('๋ณด๊ดํ ์๋ฃ')
state๋ณ๊ฒฝํจ์์ด๋ฆ(์๋ก์ดstate)
state ๋ณ๊ฒฝํจ์๋ ()์์ ๋ฃ์ ๊ฑธ๋ก state๋ฅผ ๊ฐ์์น์์ค๋ค.
state๋ฅผ ์ด์ฉํด ๋๋ฅผ๋ ์ซ์๊ฐ 1๋ก ๋ณ๊ฒฝ๋๊ฒ ํ๊ณ ์ถ์๋
let [์ข์์,์ข์์๋ณ๊ฒฝ]=useState(0)
<div onClick={()=>{์ข์์๋ณ๊ฒฝ(1)}}>{์ข์์}</div>
// onClick={์ข์์๋ณ๊ฒฝ(1)} ์ด๋ ๊ฒ ์ ๋ ๊ฒ ์๋๋ผ, ํจ์ ๋ง๋ค๊ณ ๊ทธ ์์ stateํจ์ ์ ๊ธฐ
๋๋ฅผ๋๋ง๋ค 1์ฉ ์ฆ๊ฐํ๊ฒ ํ๊ณ ์ถ์ผ๋ฉด
<div onClick={()=>{์ข์์๋ณ๊ฒฝ(์ข์์+1)}}{์ข์์}</div>
์์์ ๊ณต๋ถํ๋ ๋ฐฐ์ด destructuring์ด๋ state ๊ฒฐํฉ์์ผ๋ณด๊ธฐ!
function App(){
let [์ปคํผ,์ปคํผ๋ณ๊ฒฝ]=useState(['์๋ฉ๋ฆฌ์นด๋
ธ','์นดํ๋ผ๋ผ'])
return (
<div className="App">
<button onClick={()=>{์ปคํผ๋ณ๊ฒฝ(['์์คํ๋ ์','์นดํ๋ผ๋ผ'])}}>๋๋ฅด๋ฉด ์ปคํผ๋ณ๊ฒฝ๋จ</button>
<h4>{์ปคํผ[0]}</h4>
<h4>{์ปคํผ[1]}</h4>
</div>
)
}
state๋ฅผ ํต์งธ๋ก ๊ฐ์์๊ธฐ ๋๋ฌธ์ <button onClick={()=>{์ปคํผ๋ณ๊ฒฝ(['์์คํ๋ ์'])}}>
๋ง ์ฐ๋ฉด ๋ฒํผ ๋๋ฅด๋ ์๊ฐ ์นดํ๋ผ๋ผ๋ ํ๋ฉด์์ ์ฌ๋ผ์ง๋ ๋งค์ง์ ๋ณด๊ฒ ๋๋ค....
์ ๋ฆฌ
1. ํด๋ฆญ์ ๋ญ๊ฐ ์คํํ๊ณ ์ถ์ผ๋ฉด onClick={()=>{}} ํน์ onClick={ํจ์๋ช
} ์ด๋ ๊ฒ ์์ฑํ๊ธฐ
2. state ๋ณ๊ฒฝํ๋ ค๋ฉด state๋ณ๊ฒฝํจ์ ์ด์ฉํ๊ธฐ
state๋ณ๊ฒฝํจ์์ () ๊ดํธ ์์ ์๋ ๊ฑธ๋ก ์ ์ฒด ์น ๋ค ๊ฐ์์์ด๋ฒ๋ฆผ