๐จ๐ป๐ผ useState
ํน์ ๊ฐ์ useState()๋ก ์ ์ธํ์ฌ์ ๊ฐ์ ์ํ๋ฅผ ๊ด๋ฆฌํ๊ณ , ํด๋น ๊ฐ์ ์ํ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ํ๋ฉด์ ๋ฆฌ๋ ๋๋งํ์ฌ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด์ฌ์ค๋ค.
์ด๋, ๋ฆฌ๋ ๋๋ง์ด ์ผ์ด๋๋ ์ปดํฌ๋ํธ์ ์์ ์ปดํฌ๋ํธ๊ฐ ์๋ค๋ฉด, ์์ ์ปดํฌ๋ํธ ๋ํ ๋ค์ ๋ถ๋ฌ์์ง๋ฉด์ ์์ ์ปดํฌ๋ํธ๊น์ง ๋ฆฌ๋ ๋๋ง ๋ฉ๋๋ค.
๐ป Code
๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ , ๋ค์ ํ์ผ์ ๋ง๋ค์ด์ค๋ค.
๐ StateComponent.tsx
import React, { useState } from 'react'
export function StateComponent(): JSX.Element {
const [num, setNum] = useState<number>(0)
const onIncrease = () => setNum(num + 1)
const onDecrease = () => setNum(num - 1)
return (
<div style={{ textAlign: 'center' }}>
<p style={{ fontSize: '5rem' }}>{num}</p>
<button onClick={onIncrease}>INCREASE</button>
<button onClick={onDecrease}>DECREASE</button>
</div>
)
}
๋ค์๊ณผ ๊ฐ์ด ์์ฑํด์ค๋ค.
useState() ์ ์ธ ์, <Array>ํ์ ์ผ๋ก ๋ ๊ฐ์ ๋ณ์๋ฅผ ์ ์ธํด์ฃผ๋๋ฐ
const [ํด๋น ๊ฐ์ ๋ด์ ๋ณ์๋ช
, ๊ฐ์ ๊ด๋ฆฌํ ํจ์๋ช
] = useState<Type>(์ด๊ธฐํ๊ฐ)
๋ค์๊ณผ ๊ฐ์ ๋ชจ์์ผ๋ก ์ ์ธํ๋ค.
return()์ HTML์์ ์คํฌ๋ฆฝํธ ์ธ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ผ๋ฉด { }๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
ํ์ด์ง ์ฒซ ์ง์ ๋ก์ธ App.tsx๋ฅผ ์์ ํด์ค๋ค.
๐ App.tsx
import { StateComponent } from './components/StateComponent'
function App(): JSX.Element {
return (
<>
<StateComponent />
</>
)
}
export default App
๊ทธ๋ฆฌ๊ณ ํฐ๋ฏธ๋์์ ๋ฆฌ์กํธ ์๋ฒ๋ฅผ ์ด์ด์ฃผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋ํ๋๋ค.
$ npm start
"INCREASE"๋ฒํผ๊ณผ "DECREASE"๋ฒํผ์ ํตํด ํด๋น ์ซ์๋ฅผ ํด๋ฆญํ์ ๋ ์ฆ์ ํด๋น ๊ฐ์ด ๋ณ๊ฒฝ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
'Framework > React' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ React ] useMemo์ ๋ํด ์์๋ณด์. (0) | 2024.04.04 |
---|---|
[ React ] useRef์ ๋ํด ์์๋ณด์. (0) | 2024.04.04 |
[ React ] useEffect()๋ฅผ ์ฌ์ฉํด๋ณด์. (feat. TypeScript) (0) | 2024.03.11 |
[ React ] CRA - ๋ฆฌ์กํธ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค์ด๋ณด์. (0) | 2024.03.06 |
[ React ] ๋ฆฌ์กํธ์ ๋ํด ์์๋ณด์. (0) | 2024.03.06 |