useState
const [changeData, setChangeData] = useState('')
useState๋ ๋ฆฌ์กํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ ๊ณตํ๋ ํจ์์ธ๋ฐ ์ปดํฌ๋ํธ ํจ์๊ฐ ๋ค์ ํธ์ถ๋๋ ๊ณณ์์ ๋ณ๊ฒฝ๋ ๊ฐ์ ๋ฐ์ํ๊ธฐ ์ํด state๋ก ๊ฐ์ ์ ์ํ ์ ์๊ฒ ํด์ฃผ๋ ํจ์์ด๋ค.
state๊ฐ ๋ณํ ๋, ์ด ์ปดํฌ๋ํธ ํจ์๋ฅผ ๋ค์ ํธ์ถํ๊ณ ์ถ์ผ๋ฉด state๋ฅผ ์ ๋ฐ์ดํธํ๋ ํจ์(set์ด์ฉ๊ณ )๋ฅผ ํธ์ถํ๋ฉด ๋๋ค.
์๋ํ๋ฉด ๊ทธ ํจ์๋ฅผ ํธ์ถํด์ state์ ์๋ก์ด ๊ฐ์ ํ ๋นํ๊ณ ์ถ๋ค๊ณ ๋ฆฌ์กํธ์๊ฒ ๋งํ๊ณ ๊ทธ๋ฐ ๋ค์ ํจ์๋ ๋ํ useState๋ก state๊ฐ ๋ฑ๋ก๋ ์ปดํฌ๋ํธ๋ ์ฌํ๊ฐ๋์ด์ผํ๋ค๊ณ ๋ฆฌ์กํธ์๊ฒ ๋งํ๋ค.
๊ทธ๋์ ๋ฆฌ์กํธ๋ ์ด ์ปดํฌ๋ํธ ํจ์๋ฅผ ๋ค์ ์คํํ๊ณ ๋ํ ์ด JSX์ฝ๋๋ฅผ ๋ค์ ํ๊ฐํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ง๋ ๋ฒ๊ณผ ๋น๊ตํด์ ๊ฐ์ง๋ ๋ณํ๋ค์ ํ๋ฉด์ ๋ํ๋ด๊ฒ ํ๋ค.
state ์ ๋ฐ์ดํธ๊ฐ ์ด์ ์ํ์ ์์กดํ๊ณ ์๋ค๋ฉด?
๐์๋ ํจ์ ํผ ์ฌ์ฉํ๊ธฐ!๐
const [userInput, setUserInput] = useState({
enteredTitle: "",
enteredAmount: "",
enteredDate: "",
});
setUserInput((prevState) => {
return { ...prevState, enteredTitle: event.target.value };
});
- ๋ฒํผ์ ํ์ ์ด submit ์ด๋ผ๋ฉด ํผ ๋์ ์ ํด๋ฆญ๋๋ค๋ฉด, ์ ์ฒด ํผ ์์๋ ์์ ํ ์ ์๋ ์ด๋ฒคํธ๋ฅผ ์๋ตํ ๊ฒ์ด๋ค. ๊ทธ๋์ submit์ ๋ฐ์ํ๋ ํผ์์ ํผ์ด ์ ์ถ๋ ๋๋ง๋ค ์ผ๋ถ ํจ์๋ฅผ ์คํํ๋ค.
- input์์ ์๋ value์ ์ญํ => ๋ชจ๋ ์ ๋ ฅ ์์๋ค์ด ๊ฐ๋ ๋ด๋ถ ๊ฐ์ ํ๋กํผํฐ๋ฅผ. ์ค์ ํ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์๋ก์ด ๊ฐ์ผ๋ก ์ค์ ํ ์ ์๋ค. ์ ๋ ฅ๋ ๊ธ์ก์ ๋ค์ ์ ๋ฌํ๊ธฐ ์ํด value={enteredTitle}๋ก ๊ฐ๋ฆฌํค๊ฒ ํ ์ ์๋ค.
- ์๋ฐฉํฅ ๋ฐ์ธ๋ฉ์ ํผ์ผ๋ก ์์ ํ ๋ ์ ์ฉํ๋ค. ์๋ฅผ๋ค์ด, ํผ ์ ์ก์ ๋ฐ๋ผ ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ชจ์ผ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์๊ฒ ํด์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.
์์์์ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก ์ํตํ๋ ๋ฐฉ๋ฒ = state ๋์ด์ฌ๋ฆฌ๊ธฐ
=> props๋ฅผ ์ฌ์ฉํด์ ๋ถ๋ชจ ์ปดํฌ๋ํธ๋ก๋ถํฐ ํจ์๋ฅผ ๋ฐ๊ณ ์์ ์ปดํฌ๋ํธ์์ ๊ทธ ํจ์๋ฅผ ๋ถ๋ฌ์จ๋ค.
๋ถ๋ชจ ์ปดํฌ๋ํธ์ ์๋์ฒ๋ผ ์จ์ค๋ค.
const NewExpense = () => {
const saveExpenseDataHandler = (enteredExpenseData) => {
console.log(enteredExpenseData);
};
return (
<div className='new-expense'>
<ExpenseForm onSaveExpenseData={saveExpenseDataHandler} />
</div>
);
};
์์ ์ปดํฌ๋ํธ์ ์๋์ฒ๋ผ ์จ์ค๋ค. (props ์จ์ค๋ค.)
๋ฆฌํด ์ ์ props.onSaveExpenseData(event.target.value); ๋ฅผ ์จ์ค๋ค.
=> ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ํจ์๋ฅผ ํธ์ถํ ์ ์๊ณ , ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ ์ ์๋ค.
=> ์์ ์ปดํฌ๋ํธ์์ onSaveExpenseData() ๋ฅผ ํธ์ถํ ๋ ์์ ์ปดํฌ๋ํธ์์ ์์ฑํ data๋ฅผ (์ฌ๊ธฐ์๋ expenseData) ์ธ์๋ก ์ ๋ฌํ ์ ์๋ค.
=> ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฐ์ด ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋ ๊ฐ์ด๋ค. (์ฌ๊ธฐ์๋ enteredExpenseData)
ํ์ ์์๋ผ๋ฆฌ ์ ๋ณด๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค. ๊ทธ๋์ ๊ฐ์ฅ ๊ฐ๊น์ด ๋ถ๋ชจ๋ฅผ ํ์ฉํ๋ค.
์ด๋๊น์ง ๋์ด์ฌ๋ ค์ผ ํ์ง?
=> ์ปดํฌ๋ํธ ํธ๋ฆฌ์์ ํ์ํ ๋งํผ ๋์ด์ฌ๋ฆฌ๋๋ฐ, ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ์ปดํฌ๋ํธ์ ๋ฐ์ดํฐ๊ฐ ํ์ํ ์ปดํฌ๋ํธ์ ์ ๊ทผํ ์ ์์ผ๋ฉด ๋๋ค.