React 'State' โ๏ธ
๐ What is React โStateโ ?
State === ์ํ
์ธ๊ฐ์๊ฒ๋ ๋ฐฐ๊ณ ํ, ์ ๋นํจ, ๋ฐฐ๋ถ๋ฆ ์ด๋ผ๋ ์ํ๊ฐ ์กด์ฌํ๋ค. ์ฌ๋์ ์ด๋ ๊ฒ 3๊ฐ์ ์ํ์ ๋ฐ๋ผ์ ํ๋๋ ๋ค๋ฅด๊ฒ ๋๋ค.
์ฆ ๊ณ์ํด์ ๋ณํํ๋ ํน์ ์ํ, ์ํ์ ๋ฐ๋ผ ๊ฐ๊ฐ ๋ค๋ฅธ ๋์์ ํจ
์์ ์ฌ์ง์ ์์ฆ ์ ํํ๋ ๋คํฌํ ๋ง์ด๋ค. ์ด๊ฒ๋ Dark ์ด๊ฑฐ๋ Light๋ก ํด๋ผ์ด์ธํธ๊ฐ ์ํ๋ฅผ ์ง์ ์กฐ์ํ ์ ์๊ฒ ๋ง๋ ๊ธฐ๋ฅ์ด๋ค.
๋ฆฌ์กํธ์ ์ํ๋ ์ปดํผ๋ํธ๊ฐ ๊ฐ๋ ํ ๋ง์ฒ๋ผ ๊ณ์ ๊ฐ์ด ๋ฐ๋ ๋์ ์ธ ๋ฐ์ดํฐ์ด๊ณ , ์ํ๋ฅผ ๋ฐ๊พธ๋ ๋ฑ์ ๊ด๋ฆฌ๋ ๊ทธ ๊ธฐ๋ฅ์ ๊ฐ์ง ์ปดํผ๋ํธ๊ฐ ์ง์ ๊ด๋ฆฌํ๊ฒ ๋๋ค.
๊ทธ๋ผ ์ด์ ์์๋ก ์์๋ณด๊ฒ ๋ค.
์์
App Component
import React from "react";
import './App.css';
import MyHeader from "./MyHeader.jsx";
import Counter from "./Counter.jsx";
import Container from "./Container.jsx";
function App() {
return (
<Container>
<div className="App">
<MyHeader />
<Counter Value={2}/>
{/* ์ด๋ ๊ฒ ์์ฑ๊ฐ์ผ๋ก props๋ผ๋ ๊ฐ์ ์ ๋ฌํ ์๋ ์์ */}
</div>
</Container>
);
}
export default App;
Counter Component
/** @format */
import React, { useState } from 'react';
import OddEvenResult from './oddEvenResult';
const Counter = () => {
const [count, setCount] = useState(counterValue3); // props ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ ํ๋กํผํฐ๋ก ์ ๋ฌ ๋ฐฉ๋ฒ
const onIncrease = () => {
setCount(count + 1);
};
const onDecrease = () => {
setCount(count - 1);
};
return (
<div>
<h2>{count}</h2>
<button onClick={onIncrease}>+</button>
<button onClick={onDecrease}>-</button>
<br />
<OddEvenResult className='result' count={count} />
</div>
);
};
Counter.defaultProps = {
counterValue3: 0,
};
export default Counter;
์์ ์ฝ๋๋ ์ซ์ ๋ฐ์ดํฐ์ธ count์ +์ -์ ๋ฒํผ์ผ๋ก 1์ฉ ๋ํ๊ฑฐ๋ ๋นผ๊ฑฐ๋ ํ๋ ๊ธฐ๋ฅ์ด๋ค.
๊ฐ๋จํ์ง๋ง ์ด๋ณด๋ค ๋ ์ข์ State ์ฆ ์ํ๋ฅผ ๋ํ๋ด๋ ์์๋ ์๋ค. ์ด count๋ Counter component์ ํ์ component๋ค์๊ฒ Props์ผ๋ก count ๊ฐ์ ์ค ์๋ ์์ผ๋ฉฐ ์ด ๊ฐ์ ๊ฐ component ๋ผ๋ฆฌ ์ ๊ธฐ์ ์ผ๋ก ์ํ๋ฅผ ๊ณต์ ํ๊ฒ ๋๋ค.
โ๏ธ ๋ค๋ง!! ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ณ์๋ฅผ ์ ์ธํด ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ๊ณ์ ๋ค๋ฅธ ๊ฐ์ ๋ฃ์ด ์ฌ์ฉํ๋๋ผ๋ฉด ๋ฆฌ์กํธ๋ count์ ์ํ๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ํด์๋ setCount๋ก๋ง ์ ๊ทผ์ ํด์ผํ๋ค. ์๋ฐ๋ ๋ค๋ฅธ ์ธ์ด๋ค์ getter, setter ์ ๊ฐ์ ๊ธฐ๋ฅ์ผ๋ก ๋ณด๋ฉด ๋ ๊ฑฐ ๊ฐ๋ค.
๐ Props์ State์ ์ฐจ์ด
Props(Properties)
- Arguments of function
- ์ปดํฌ๋ํธ ๋ฐ์ ์๋ค.
- ์๋ฅผ ์นด์ดํธํ๋ ์ฑ์ ๋ง๋ ๋ค๊ณ ํ์๋ initial value๊ฐ์ ๊ฒ์ props๋ก ์ฌ์ฉํ๋ฉด ์ข๋ค.
- ์ปดํฌ๋ํธ ๋ฐ์์ handle ํ๋ค.
- ์ปดํฌ๋ํธ ์์์ ๋ณ๊ฒฝํ ์ ์๋ค.
- ๊ฐ์ด ๋ณ๊ฒฝ๋์ง์๊ณ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ๊ฒ์ props๋ก ๋ง๋๋ ๊ฒ์ด ์ข๋ค.
- Staticํ ๊ฒ๋ props๋ก ๋ง๋ค๋ฉด ์ข๋ค
State
- ์ปดํฌ๋ํธ ์์ ์๋ค.
- ์นด์ดํธ ์ฑ์ ๋ง๋ค ๋ state์์ ๋ณ๊ฒฝ๋๋ ๊ฐ์ ์ ์ฅํ ์ ์๋ค.
- ์ปดํฌ๋ํธ ์์์ handle ํ๋ค.
- State๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์๋์ผ๋ก ์ ๋ฐ์ดํธ ๋๋ค.
- ๊ฐ์ด ๋ณ๊ฒฝ๋์ด์ผ ๋๋ ๊ฑด state๋ก ์ ์ฅํด์ผ ๋๋ค.
- ์ ์ ๊ฐ ๊ฐ์ ์ ๋ฐ์ดํธํ๋ Form๊ฐ์ ๊ฒ์ ์ฐ๋ฉด ์ข๋ค.