๐Ÿ–ฅFrontEnd/React

๋ฆฌ์•กํŠธ ํ•ต์‹ฌ, useState๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•

hellohailie 2022. 7. 23. 15:28

๋ฆฌ์•กํŠธ ํ•ต์‹ฌ 1 .

๋งŒ์•ฝ ๋ณ€ํ™”ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ ๊ทธ ๋ณ€ํ™”ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์— ๋ฐ˜์˜๋˜์–ด์•ผ ํ•œ๋‹ค๋ฉด state๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

์™œ๋ƒ๋ฉด ์ผ๋ฐ˜์ ์ธ ๋ณ€์ˆ˜๋Š” ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์ง€๋งŒ state๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ’์„ ์„ค์ •ํ•˜๊ณ  ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  state๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๋ฆฌ์•กํŠธ๋Š” ๊ทธ state๊ฐ€ ๋“ฑ๋ก๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์žฌํ‰๊ฐ€ํ•  ๊ฒƒ์ด๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋Š” ๋นผ๊ณ  ๊ทธ ์ปดํฌ๋„ŒํŠธ๋งŒ ์žฌํ‰๊ฐ€ํ•  ๊ฒƒ์ด๋‹ค. state๊ฐ€ ๋“ฑ๋ก๋œ ๊ทธ ์ปดํฌ๋„ŒํŠธ๋งŒ!!

 

๋ฆฌ์•กํŠธ ํ•ต์‹ฌ 2 .

๋ฆฌ์•กํŠธ๋Š” ์ปดํฌ๋„ŒํŠธ ๋ณ„ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด์„œ ๋…๋ฆฝ์ ์ธ state๋ฅผ ๊ฐ–๋Š”๋‹ค. 

 


1. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์€ useState ์‚ฌ์šฉ๋ฒ•

const ExpenseForm = () => {
  const [enteredTitle, setEnteredTtile] = useState('');
  const [enteredAmount, setEnteredAmount] = useState('');
  const [enteredDate, setEnteredDate] = useState('');
  
  const titleChangeHandler = (e) => {
    setEnteredTitle(event.target.value);
  }
  const amountChangeHandler = (e) => {
    setEnteredAmount(event.target.value);
  }
  const dateChangeHandler = (e) => {
    setEnteredDate(event.target.value);
  }
  
}

 

 

2. ๋…๋ฆฝ์ ์ธ state๊ฐ€ ์•„๋‹ˆ๋ผ ํ•œ ๊ฐœ์˜ state์ฒ˜๋Ÿผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•

const ExpenseForm = () => {
 const [userInput, setUserInput]= useState({
    enteredTitle:'',
    enteredAmount:'',
    enteredDate:''
  })
 const titleChangeHandler = (e) => {
    setUserInput({...userInput,enteredTitle : event.target.value});
  }
 const amountChangeHandler = (e) => {
    setUserInput({...userInput,enteredAmount : event.target.value});
  }
 const dateChangeHandler = (e) => {
    setUserInput({...userInput,enteredDate : event.target.value});
  }
 }

 

๐Ÿ‘‰   3๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ state๊ฐ€ ์•„๋‹ˆ๋ผ ํ•œ ๊ฐœ์˜ state์ฒ˜๋Ÿผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. 
์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•๊ณผ์˜ ์ฐจ์ด์  :state๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋งˆ๋‹ค ํ•œ ๊ฐœ๊ฐ€ ์•„๋‹ˆ๋ผ ์ด ์„ธ ํ”„๋กœํผํ‹ฐ ๋ชจ๋‘๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ด์•ผํ•œ๋‹ค๋Š” ์ !!

 

 

๋งŒ์•ฝ ํ•˜๋‚˜์”ฉ ์ฆ๊ฐ€ํ•˜๋Š” ์นด์šดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋งˆ๋‹ค ์œ„ ์‹์ฒ˜๋Ÿผ ์“ฐ๋ฉด ์•ˆ๋œ๋‹ค. ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์œ„ํ•œ ๋Œ€์ฒด ํผ์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค. ๐Ÿ‘‡๐Ÿ‘‡

 

3. ๋…๋ฆฝ์ ์ธ state๊ฐ€ ์•„๋‹ˆ๋ผ ํ•œ ๊ฐœ์˜ state์ฒ˜๋Ÿผ ๊ด€๋ฆฌํ•˜๋Š”๋ฐ, ์ƒํƒœ ์—…๋ฐ์ดํŠธ๊ฐ€ ์ด์ „ ์ƒํƒœ์— ์˜์กดํ•˜๊ณ  ์žˆ์œผ๋ฉด ์ด ํ•จ์ˆ˜ ํผ ์‚ฌ์šฉํ•˜๊ธฐ

const ExpenseForm = () => {
 const [userInput, setUserInput]= useState({
    enteredTitle:'',
    enteredAmount:'',
    enteredDate:''
  })
 const titleChangeHandler = (e) => {
    setUserInput((prevState) => {
      return {...prevState, enteredTitle : event.target.value}
    });
  }
 const amountChangeHandler = (e) => {
    setUserInput((prevState) => {
      return {...prevState, enteredAmount : event.target.value}
    });
  }
 const dateChangeHandler = (e) => {
    setUserInput((prevState) => {
      return {...prevState, enteredDate : event.target.value}
    });
  }
 }

 

๐Ÿ‘‰ ๋ฆฌ์•กํŠธ๊ฐ€ ์ƒํƒœ ์—…๋ฐ์ดํŠธ ์Šค์ผ€์ค„์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์„œ ๋ฐ”๋กœ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋งํ•œ ๊ฒƒ์„ ๊ธฐ์–ตํ•ด ๋‘์ž!!
๊ทธ๋ž˜์„œ ์ด๋ก ์ ์œผ๋กœ ๋™์‹œ์— ์ˆ˜๋งŽ์€ ์ƒํƒœ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ณ„ํšํ•œ๋‹ค๋ฉด ์˜ค๋ž˜๋˜์—ˆ๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ์ƒํƒœ ์Šค๋ƒ…์ƒท์— ์˜์กดํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ๋ฆฌ์•กํŠธ๋Š” ์ด ์•ˆ์— ์žˆ๋Š” ํ•จ์ˆ˜์—์„œ ์ด ์ƒํƒœ ์Šค๋ƒ…์ƒท์ด ๊ฐ€์žฅ ์ตœ์‹  ์ƒํƒœ์˜ ์Šค๋ƒ…์ƒท์ด๋ผ๋Š” ๊ฒƒ๊ณผ ํ•ญ์ƒ ๊ณ„ํš๋œ ์ƒํƒœ ์—…๋ฐ์ดํŠธ๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•œ๋‹ค. 

 


์ƒํƒœ ์—…๋ฐ์ดํŠธ๊ฐ€ ์ด์ „ ์ƒํƒœ์— ์˜์กดํ•˜๊ณ  ์žˆ์œผ๋ฉด 3๋ฒˆ ํผ ์‚ฌ์šฉํ•˜๊ธฐ

 

๐Ÿ˜ƒ ์ž˜๋ชป๋œ ๊ฐœ๋… ์ „๋‹ฌ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ €์˜ ์„ฑ์žฅ์— ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค๐Ÿค“