Props์™€ State

:D ยท2021๋…„ 11์›” 30์ผ
1

React ๐Ÿ“š

๋ชฉ๋ก ๋ณด๊ธฐ
3/8
post-thumbnail

๐Ÿ“Œ ๋ฆฌ์•กํŠธ ๊ณต์‹๋ฌธ์„œ์™€ ๋ฆฌ์•กํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ธฐ์ˆ ์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

Props๋ž€?

์ปดํฌ๋„ŒํŠธ ์†์„ฑ์„ ์„ค์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์š”์†Œ๋กœ, ๊ฐ„๋‹จํžˆ ๋งํ•˜์ž๋ฉด ์ปดํฌ๋„ŒํŠธ์—์„œ ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌํ•˜๋Š” ๋ฐ์ดํ„ฐ ์ด๋‹ค.

  • props๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด๋‹ค. โ†’ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋‚˜ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ ๋ชจ๋‘ ์ปดํฌ๋„ŒํŠธ์˜ ์ž์ฒด props๋ฅผ ์ˆ˜์ •ํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.
  • ๋ชจ๋“  React ์ปดํฌ๋„ŒํŠธ๋Š” ์ž์‹ ์˜ props๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๋ฐ˜๋“œ์‹œ ์ˆœ์ˆ˜ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ๋™์ž‘ํ•ด์•ผํ•œ๋‹ค.

์ˆœ์ˆ˜ํ•จ์ˆ˜ โ†’ ์ž…๋ ฅ๊ฐ’์„ ๋ฐ”๊พธ๋ ค ํ•˜์ง€ ์•Š๊ณ  ํ•ญ์ƒ ๋™์ผํ•œ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•ด ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ

function sum(a, b) {
  return a + b;
}

์ˆœ์ˆ˜ํ•จ์ˆ˜ โŒย โ†’ ์ž์‹ ์˜ ์ž…๋ ฅ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ๋•Œ๋ฌธ

function withdraw(account, amount) {
  account.total -= amount;
}
  • props ๊ธฐ๋ณธ ๊ฐ’ ์„ค์ •: defaultProps
  • ํƒœ๊ทธ ์‚ฌ์ด์˜ ๋‚ด์šฉ์„ ๋ณด์—ฌ์คŒ: children
  • props ํƒ€์ž… ๊ฒ€์ฆ: propTypes

State๋ž€?

state๋Š” props์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ์ปดํฌ๋„ŒํŠธ ๋‚ด๋ถ€์—์„œ ๋ฐ”๋€”์ˆ˜ ์žˆ๋Š” ๊ฐ’์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

State๋ฅผ ์‚ฌ์šฉํ• ๋•Œ ์ฃผ์˜ํ• ์ 

  • ์ง์ ‘ State๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ธฐ
// Wrong
this.state.comment = 'React';

// Correct
this.setState({comment: 'React'});
  • State ์—…๋ฐ์ดํŠธ๋Š” ๋น„๋™๊ธฐ
// Wrong
this.setState({
  count: this.state.count + this.props.increment,
});

// Correct
this.setState((state, props) => ({
  counter: state.count + props.increment
}));
  • ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด ์—…๋ฐ์ดํŠธ ์‹œ

๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด์˜ ์‚ฌ๋ณธ์„ ๋งŒ๋“ค๊ณ  ๊ทธ ์‚ฌ๋ณธ์— ๊ฐ’์„ ์—…๋ฐ์ดํŠธ ํ•œ ํ›„, ๊ทธ ์‚ฌ๋ณธ์˜ ์ƒํƒœ๋ฅผ setState๋ฅผ ํ†ตํ•ด ์—…๋ฐ์ดํŠธ ํ•œ๋‹ค.

๊ฐ์ฒด์— ๋Œ€ํ•ด ์‚ฌ๋ณธ์„ ๋งŒ๋“ค๋•Œ๋Š” spread ์—ฐ์‚ฐ์ž๋ผ ๋ถˆ๋ฆฌ๋Š” ...์„ ์‚ฌ์šฉํ•˜๊ณ , ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์‚ฌ๋ณธ์„ ๋งŒ๋“ค๋•Œ๋Š” ๋ฐฐ์—ด์˜ ๋‚ด์žฅํ•จ์ˆ˜๋“ค์„ ํ™œ์šฉํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋ฉด state์™€ย props์˜ ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€?

props ์™€ state๋Š” ๋ชจ๋‘ ๋ Œ๋”๋ง ๊ฒฐ๊ณผ๋ฌผ์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. props๋Š” (ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์ฒ˜๋Ÿผ) ์ปดํฌ๋„ŒํŠธ์— ์ „๋‹ฌ๋˜๋Š” ๋ฐ˜๋ฉดย state๋Š” (ํ•จ์ˆ˜ ๋‚ด์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ) ์ปดํฌ๋„ŒํŠธย ์•ˆ์—์„œย ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ props๋Š” ์ฝ๊ธฐ์ „์šฉ์ด๋ฉฐ, state๋Š” ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

profile
๊ฐ•์ง€์˜์ž…๋‹ˆ...๐Ÿฟ๏ธ

0๊ฐœ์˜ ๋Œ“๊ธ€