React์—์„œ ๋ฆฌ๋ Œ๋”๋ง์„ ํ•˜๋Š” ์กฐ๊ฑด

React์—์„œ ๋ฆฌ๋ Œ๋”๋ง์„ ํ•˜๋Š” ์กฐ๊ฑด

์ƒ์„ฑ์ผ
Oct 29, 2021 05:55 AM
๊ธฐ๋ก์ž
ํ•ด๊ฒฐ ์—ฌ๋ถ€
ํ•ด๊ฒฐ ์—ฌ๋ถ€
์†์„ฑ
React
์นดํ…Œ๊ณ ๋ฆฌ

๐Ÿ” ๋ฐฐ๊ฒฝ ๋ฐ ๊ถ๊ธˆ์ฆ

์˜ค๋Š˜ ๋‚˜์˜จ ์ด์Šˆ์— ๋Œ€ํ•ด์„œ ์ข€ ๋” ๊ฒ€ํ† ํ•ด๋ณด๊ณ ์ž ์ด ๊ธ€์„ ์“ฐ๊ฒŒ ๋๋‹ค,
์˜ค๋Š˜์˜ ์ด์Šˆ๋Š” ๋ฌด์—‡์ด์—ˆ๋ƒ๋ฉด, Like๋ฅผ ํ•  ๋•Œ, ๋‚™๊ด€์  ์—…๋ฐ์ดํŠธ๋ฅผ ํ–ˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์ œ๋Œ€๋กœ Like API๊ฐ€ ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ํ˜ธ์ถœ๋˜์ง€ ์•Š์•„์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒƒ์ด์—ˆ๋‹ค.
๋”ฐ๋ผ์„œ ๊ฐ€์žฅ ํฐ ์›์ธ์€ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ์˜ ๋ฆฌ๋ Œ๋”๋ง์ด ๋˜์ง€ ์•Š์•˜๋˜ ํ˜„์ƒ์ด๋‹ค.
์ด๋ฅผ ๋ฐ‘์—์„œ setPost(LikeAPI)๋ฅผ ํ†ตํ•ด ํ•ด๊ฒฐํ–ˆ์ง€๋งŒ, ๊ฒฐ๊ตญ ๋ฆฌ๋ Œ๋”๋ง ๋ฌธ์ œ์— ๋Œ€ํ•ด์„œ ๋‹ค์‹œ ์‚ดํŽด ๋ณด์•„์•ผ ํ•  ํ•„์š”์„ฑ์ด ์žˆ์–ด ์ฐพ๊ฒŒ ๋˜์—ˆ๋‹ค.

๐Ÿ“ข ๋ฆฌ๋ Œ๋”๋ง์˜ ์กฐ๊ฑด

state ๋ณ€๊ฒฝ์ด ์žˆ์„ ๋•Œ

  • react ์—์„œ ์œ ๋™์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ state ๋ผ๋Š” ๊ฒƒ์„ ์ด์šฉํ•œ๋‹ค. ์ด๋•Œ state ๊ฐ’์„ ๋ฐ”๊ฟ”์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋Š” state ๋ฅผ ์ง์ ‘ ์กฐ์ž‘ํ•ด์„œ๋Š” ์•ˆ๋˜๊ณ  setState() ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ฃผ์–ด์•ผํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋ฆฌ์•กํŠธ๋Š” state ์˜ ๋ณ€๊ฒฝ์ด ๊ฐ์ง€๋˜๋ฉด ๋ฆฌ๋ Œ๋”๋ง์„ ํ•ด์ฃผ๋Š” ๋ฐ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ง์ ‘ ๋ฐ”๊ฟ”์ฃผ๊ฒŒ ๋˜๋ฉด ๋ฆฌ์•กํŠธ๊ฐ€ state ์˜ ๋ณ€๊ฒฝ์„ ๊ฐ์ง€ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋œ๋‹ค.

์ƒˆ๋กœ์šด props์ด ๋“ค์–ด์˜ฌ ๋•Œ

  • ์ „๋‹ฌ๋ฐ›์€ props ๊ฐ’์ด ์—…๋ฐ์ดํŠธ ๋ฌ๋‹ค๋ฉด ๋ฆฌ ๋ Œ๋”๋ง ๋œ๋‹ค.

๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ Œ๋”๋ง ๋  ๋•Œ

  • ์ƒˆ๋กœ์šด prop ์ด ๋“ค์–ด์˜ค์ง€ ์•Š๋”๋ผ๊ณ  ๋ถ€๋ชจ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋ฆฌ๋ Œ๋”๋ง ๋œ๋‹ค๋ฉด ์ž์‹์ปดํฌ๋„ŒํŠธ ์—ญ์‹œ ๋ฆฌ๋ Œ๋”๋ง์ด ๋œ๋‹ค.

shouldComponentUpdate์—์„œ true๊ฐ€ ๋ฐ˜ํ™˜๋  ๋•Œ

  • ๊ฐ๊ฐ์˜ ์ปดํฌ๋„ŒํŠธ๋Š” shouldComponentUpdate ๋ผ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ ์ด๋Š” state๊ฐ€ ๋ณ‘๊ฒฝ๋˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด props๋ฅผ ์ „๋‹ฌ๋ฐ›๋Š”๊ฒฝ์šฐ ์‹คํ–‰์ด ๋œ๋‹ค ์ด๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ return ๊ฐ’์€ true ๊ฐ€ ๋˜์–ด rendering ์ด ์‹œ์ž‘๋˜์ง€๋งŒ rerendering ์ด ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„์ด๋ผ๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ return value ๋ฅผ false ๊ฐ’์œผ๋กœ ์ง€์ •ํ•จ์œผ๋กœ์จ ๋ฆฌ๋ Œ๋”๋ง ๋˜๋Š” ์ƒํ™ฉ์„ ๋ง‰์•„์ค„์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค.

forceUpdate๊ฐ€ ์‹คํ–‰๋  ๋•Œ

  • props ๋‚˜ state ๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๋•Œ ๋ฆฌ๋ Œ๋”๋ง์„ ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ทธ๋•Œ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ ์ด๋‹ค.