๐๏ธ์์ด๋ณด์ ๊ธฐ๋ก์ฉ Velogโ
โป ์์ธํ ์ค๋ช
์ ๊ตฌ๊ธ๋ง ๋ค๋ฅธ ๋ถ๋ค ์ฐธ๊ณ โ๏ธ
โ๏ธ ์๋จ์ import useSate from 'react';
โ๏ธ App ํจ์ ๋ด useState ํ
์ฌ์ฉ
โ๏ธ ์ฝ์์ ์ด๊น๊ฐ์ด ๋์ค๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค!
(โ ๏ธํ๊ธ๋ก ํ์ ๊ฒฝ์ฐ ๊ฐ์ ๋์ค์ง๋ง ์ข์ง ์๊ธฐ์ ์ค์ ์ฌ์ฉ ์ ์๋ฌธ์ผ๋ก ์ฌ์ฉํด์ฃผ์ธ์)
โ๏ธ ๋ ๋ฒ ์ถ๋ ฅํ๋ ๊ฑด React์์๋ ์ค๋ฅ๋ฅผ ์ก๊ธฐ ์ํด ๋ ๋ฒ์ฉ ๋ ๋๋ง ๋๋ค๊ณ ํ๋ฉฐ ๋ ๋ฒ์ฉ ๋์ค๋ ๊ฒ ๋ณด๊ธฐ ์ซ๋ค๋ฉด src/index ํ์ผ์์ React.StrictMode๋ฅผ ์ง์ฐ๋ฉด ๋๋ค๊ณ ํฉ๋๋ค
โ๏ธ ์ ๋ ์ญ์ ํ์ง ์๊ณ ์งํ!!
import { useState } from 'react';
[state, setState] = useState('');
โฌ๏ธ โฌ๏ธ โฌ๏ธ
[state๊ฐ, state๋ณ๊ฒฝํจ์] = useState(์ด๊น๊ฐ);
์ฒซ ๋ฒ์งธ ๋ณ์ :state๊ฐ์ ์ด๊น๊ฐ์ผ๋ก ์ฒ์ ์ง์ ๋ฉ๋๋ค.
๋ ๋ฒ์งธ ๋ณ์ : state๋ณ๊ฒฝํจ์์
๋๋ค ์ฒ์์ set์ ๋ถ์ฌ์ ์๊ธฐ ์ฝ๊ฒ ์์ฑํด์ฃผ๋ ๊ฒ์ด ์ข์ต๋๋ค
โ๏ธ ์๋์ ๊ฐ์ด 0์ผ๋ก ๋ณด์ฌ์ง๊ณ ์์ต๋๋ค
โ๏ธ state ๊ฐ์ ์ ๋ถ ์ด๋ ๊ฒ ํด์ฃผ๋ฉด ๊ฐ๋ฅ์ ํ์ง๋ง! ๋ถํ์ํ๊ฒ state๋ฅผ ์ฌ์ฉํ ํ์๋ ์์ต๋๋ค!
โ๏ธ ๋์ ์ ๋ณ๊ฒฝ๋๋ ๊ฐ, ๋ณ๊ฒฝ๋ ๊ฐ์ด ๋ฐ์๋๊ฒ ๋ง๋ค๊ณ ์ถ์ ๋ state์ ์ฌ์ฉํฉ๋๋ค!
โ๏ธ ๊ฐ์ ๋ณ๊ฒฝํ์ฌ ํ์ธํ๊ธฐ ์ํด ๋ฒํผ ํด๋ฆญ์ ํด๋ณด๊ฒ ์ต๋๋ค
<button type="button">๋ณ๊ฒฝ!</button>
โ๏ธ ๋ฒํผ ํ๊ทธ๋ง ์๋ค๊ณ ํด์ ๋ณ๊ฒฝ์ด ๋์ง ์๊ณ onClick ํด๋ฆญ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ํตํด ๋์ ๋ช
๋ น์ ๋ด๋ ค์ค๋๋ค
โ๏ธonClick={ํจ์} ์ฌ์ฉ๋ฒ
โ๏ธ 1,2,3 ์ด๋ ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค
โ๏ธ 3๋ฒ์ ๊ฒฝ์ฐ ํธํ๊ฒ ์
๋ ฅํ์ฌ ์ฌ์ฉํ ์ ์์ง๋ง
click ๋์ ์ ํด์ผํ ์ผ๋ค์ด ๋ง๋ค๋ฉด 1, 2๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค!
โ ๊ฐ๋จํ onClick์ผ๋ก ๋์ํ๋ ๋ฐฉ๋ฒ์ ์๊ฒ ๋์์ผ๋ state ๊ฐ์ ๋ณ๊ฒฝํด๋ณด๋๋ก Click!!
โ๏ธ ๋ณด๊ธฐ ์ฝ๊ฒ onClick 3๋ฒ์ ๋ฐฉ๋ฒ์ผ๋ก ํ
์คํธ๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค
โ๏ธ 1,2,3๋ฒ ์ค ์ ๋๋ก state๊ฐ์ด ๋ณ๊ฒฝ ๋๋ ๊ฑด 3๋ฒ!!
โ number ๊ฐ๋ง ๋ณ๊ฒฝํ๋ฉด ๋์ด๋๊น number ์ง์ ๋ณ๊ฒฝํ๋ฉด ๋์ง ์์๊น??
โ๏ธ state ๊ฐ์ ๋ ๋ฒ์งธ ๋ณ์์๋ setNumber์ ํตํด์ ๋ณ๊ฒฝ์ ํด์ผ ํฉ๋๋ค
โ number ๊ฐ์ 7๋ก ๋ฐ๊พธ๊ณ ์ถ์ด! ๐ setNumber(7) (๊ดํธ ์์ ๋ณ๊ฒฝ ๊ฐ์ ์ ๋ ฅ)
โ๏ธ 1,2๋ฒ ๋ฒํผ ํด๋ฆญ ์ ์๋ฌ!! ๋๋ ๋์์ด ๋์ง ์์ต๋๋ค.
โ๏ธ 3๋ฒ ๋ฒํผ ํด๋ฆญ ์ ๋ณ๊ฒฝ! ํ์ธ์ ์ํด 7, 0 ๋ฒํผ 2๊ฐ ์์ฑ
โฌ๏ธcodesandbox
๋ณ๊ฒฝ๋ ๊ฐ์ผ๋ก ๋ค์ ๋ฐ๊ฟ์ค์ผํ์ง๋ง
state๋ ๋ณ๊ฒฝ๋ ๊ฐ์ผ๋ก ๋ค์ ๋ฐ๊ฟ์ฃผ์ง ์๊ณ
state ๊ฐ๋ง ๋ณ๊ฒฝ ํด์ฃผ๋ฉด ์ฌ๋ ๋๋ง(๋ค์ ํ๋ฒ return(๋ด์ฉ๋ฌผ : html ํ๊ทธ๋ค ์ ๋ณด)๋ฅผ ๊ทธ๋ ค์ค๋ค )๋์ด ๋ณ๊ฒฝ๋ ๊ฐ์ผ๋ก
์ ๋๋ก ๋
ธ์ถ ๋๊ณ ์๋ ์ ์ ํ์ธํ ์ ์์ต๋๋ค!
๊ฐ์ฌํฉ๋๋ค. ๐
์ด๋ ๊ฒ ์ ์ฉํ ์ ๋ณด๋ฅผ ๊ณต์ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.