
๐ก๋ ธ๋ง๋์ฝ๋ ๋๊ผฌ์ค์ ๊ฐ์๋ฅผ ๋ณด๋ฉฐ ๊ณต๋ถํ๋ ์๋ฆฌ์ฆ์ ๋๋ค.
state๋ฅผ ๊ด๋ฆฌ(upDate)ํ๋ setState ํจ์๋ ์ง์ ์ ๋ ฅํ๋ ๊ฒ์ ์ ์ธํ๊ณ ๋ ๊ฐ์ง๊ฐ ๋ ์๋ค.
1.setCounter ์ด์ state๋ฅผ ์ด์ฉํด current state ๊ณ์ฐํ๊ธฐ
const root = document.getElementById("root");
const App = () => {
const [counter, setCounter] = React.useState(0);
const onClick = () => {
setCounter(counter + 1);
};
return (
<div>
<h3>Total clicks: {counter}</h3>
<button onClick={onClick}>Click me</button>
</div>
);
};
ReactDOM.render(<App />, root);
์ง๊ธ๊น์ง ์ฌ์ฉํ๋ ๋ฐฉ์์ ํจ์์ด๋ค. ์ด ๋ฐฉ์์ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด state์ธ counter๊ฐ ์๊ฐ์ง๋ ๋ชปํ ๋ค๋ฅธ ๊ณณ์์ ๋ณ๊ฒฝ๋์ด ์ฐ๋ฆฌ๊ฐ ์๊ฐํ ๊ฐ์ผ๋ก ์๋๊ฒ ๋ ์ ์๋ค. ์ผ์ข ์ ๋ฒ๊ทธ์ด๋ฉฐ ํ๋ก์ ํธ ๋์ค์ ๋ฐ์ ํ ์๋ ์๋ค๋ ์ํ์ฑ์ด ์กด์ฌํ๋ค.
2.setCounter ํจ์ํ
const root = document.getElementById("root");
const App = () => {
const [counter, setCounter] = React.useState(0);
const onClick = () => {
setCounter((current) => current + 1);
//setCounter((ํ์ฌ๊ฐ) => ํ์ฌ๊ฐ + 1);
};
return (
<div>
<h3>Total clicks: {counter}</h3>
<button onClick={onClick}>Click me</button>
</div>
);
};
ReactDOM.render(<App />, root);
setCounter๊ฐ ์คํ๋ ๋ ์ฒซ๋ฒ์งธ argument(์ ๋ฌ์ธ์)๋ current(ํ์ฌ๊ฐ)์ด ๋๋ฉฐ, ์ด ํจ์๊ฐ ์คํ๋ ํ return๊ฐ์ด ์๋ก์ด state๊ฐ ๋๋ ๋ฐฉ์์ด๋ค. ์ด ๊ฒฝ์ฐ์ return๊ฐ์ current+ 1์ด ๋๋ค.
์ด ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒ์ด state๋ฅผ ๊ด๋ฆฌํ๋๋ฐ ์ข๋ ์์ ํ ๋ฐฉ์์ธ๋ฐ current๊ฐ ๋ฌด์กฐ๊ฑด ํ์ฌ๊ฐ์ด๋ผ๋ ๊ฒ์ ๋ณด์ฅํ๊ธฐ ๋๋ฌธ์ด๋ค.
์ฆ, ํ์ฌ state๋ฅผ ๊ธฐ๋ฐ์ผ๋ก state๋ฅผ upDateํ๊ณ ์ถ๋ค๋ฉด ์ด ๋ฐฉ์์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.