Frontend/React

React | ๋ฐฐ์—ด ํƒ€์ž… State ์—…๋ฐ์ดํŠธ

์ด์ œํฌ 2023. 11. 24. 17:00


State์—๋Š” JavaScript์—์„œ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ํƒ€์ž…์˜ ๊ฐ’์ด ํ• ๋‹น๋  ์ˆ˜ ์žˆ๋‹ค. ex) string, number, boolean, array, object ๋“ฑ๋“ฑ...

๊ทธ ์ค‘ ํ•ต์‹ฌ์€ State ๊ฐ’์ด ๋ถˆ๋ณ€์„ ์œ ์ง€ํ•˜๋ฉด์„œ ์—…๋ฐ์ดํŠธ ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค.

๋ฐฐ์—ด ํƒ€์ž… State ์—…๋ฐ์ดํŠธ ๋ฐฉ๋ฒ•์€ ๋งŽ์ง€๋งŒ ์ดํ•˜ ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

 

concat() ์‚ฌ์šฉ

  • ๋ฐฐ์—ด์— ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š” JavaScript ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.
  • ๊ธฐ์กด ๋ฐฐ์—ด์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (๋ถˆ๋ณ€์„ฑ ์œ ์ง€)
const [myArray, setMyArray] = useState([1, 2, 3]);

const addElementConcat = (newElement) => {
  setMyArray((prevArray) => prevArray.concat(newElement));
};

์ „๊ฐœ์—ฐ์‚ฐ์ž(`...`) ์‚ฌ์šฉ

  • ์›๋ณธ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋ณต์‚ฌํ•œ ํ›„ ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. (๋ถˆ๋ณ€์„ฑ ์œ ์ง€)
const [myArray, setMyArray] = useState([1, 2, 3]);

const addElementSpread = (newElement) => {
  setMyArray((prevArray) => [...prevArray, newElement]);
};

push() ์‚ฌ์šฉ (๋น„์ถ”)

  • ๋ฐฐ์—ด์— ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” JavaScript ํ•จ์ˆ˜์ด๋‹ค.
  • ์›๋ณธ ๋ฐฐ์—ด์„ ๋ณ€๊ฒฝํ•˜๊ณ , ๋ณ€๊ฒฝ๋œ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ์›๋ณธ ๋ฐฐ์—ด์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆ๋ณ€์„ฑ์„ ์œ ์ง€ํ•˜์ง€ ๋ชปํ•œ๋‹ค. -> React์—์„œ ์ƒํƒœ ์—…๋ฐ์ดํŠธ ์‹œ ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•
const [myArray, setMyArray] = useState([1, 2, 3]);

const addElementBad = (newElement) => {
  const newArray = myArray;
  newArray.push(newElement);
  setMyArray(newArray);
};

Array.from() + push() ์‚ฌ์šฉ

  • Array.from()์€ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๋Š” JavaScript ๋ฉ”์„œ๋“œ ์ด๋‹ค.
  • Array.from()์„ ์‚ฌ์šฉํ•˜๋ฉด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ถˆ๋ณ€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์–ด๋–ป๊ฒŒ ํ•ด์„œ๋„ push()๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ˜„ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.
const [myArray, setMyArray] = useState([1, 2, 3]);

  const addElementArrayFrom = (newElement) => {
    const newArray = Array.from(myArray);
    newArray.push(newElement);
    setMyArray(newArray);
  };
๋ฐ˜์‘ํ˜•