useMemo๋ฅผ ๋ฐฐ์ฐ๊ธฐ์ ์ useMemo์์ Memo ๋ฅผ ๋ปํ๋ ๋ฉ๋ชจ์ด์ ์ด์ (memoization)์ ๋ํด ์์๋ณด์.
๋ฉ๋ชจ์ด์ ์ด์ (memoization)์ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ด ๋์ผํ ๊ณ์ฐ์ ๋ฐ๋ณตํด์ผ ํ ๋, ์ด์ ์ ๊ณ์ฐํ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํจ์ผ๋ก์จ ๋์ผํ ๊ณ์ฐ์ ๋ฐ๋ณต ์ํ์ ์ ๊ฑฐํ์ฌ ํ๋ก๊ทธ๋จ ์คํ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ๋ ๊ธฐ์ ์ด๋ค. ๋์ ๊ณํ๋ฒ์ ํต์ฌ์ด ๋๋ ๊ธฐ์ ์ด๋ค
๋ฉ๋ชจ์ด์ ์ด์ ๋ '๊ฐ'์ ๋ฐํํ๋ค.
์์ฑ(create) ํจ์์ ๊ทธ๊ฒ์ ์์กด์ฑ ๊ฐ์ ๋ฐฐ์ด์ ์ ๋ฌํ์ธ์. useMemo๋ ์์กด์ฑ์ด ๋ณ๊ฒฝ๋์์ ๋์๋ง ๋ฉ๋ชจ์ด์ ์ด์
๋ ๊ฐ๋ง ๋ค์ ๊ณ์ฐ ํ ๊ฒ์
๋๋ค. ์ด ์ต์ ํ๋ ๋ชจ๋ ๋ ๋๋ง ์์ ๊ณ ๋น์ฉ ๊ณ์ฐ์ ๋ฐฉ์ง
ํ๊ฒ ํด ์ค๋๋ค.
์์
์์กด์ฑ ๊ฐ์ธ isKorea๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง ์์ฑํจ์๊ฐ ์คํ๋๋ค.
๋ฉ๋ชจ์ด์ ์ด์ ๋ 'ํจ์'๋ฅผ ๋ฐํํ๋ค.
์ธ๋ผ์ธ ์ฝ๋ฐฑ๊ณผ ๊ทธ๊ฒ์ ์์กด์ฑ ๊ฐ์ ๋ฐฐ์ด์ ์ ๋ฌํ์ธ์. useCallback์ ์ฝ๋ฐฑ์ ๋ฉ๋ชจ์ด์ ์ด์
๋ ๋ฒ์ ์ ๋ฐํํ ๊ฒ์
๋๋ค. ๊ทธ ๋ฉ๋ชจ์ด์ ์ด์
๋ ๋ฒ์ ์ ์ฝ๋ฐฑ์ ์์กด์ฑ์ด ๋ณ๊ฒฝ๋์์ ๋์๋ง ๋ณ๊ฒฝ๋ฉ๋๋ค. ๋ถํ์ํ ๋ ๋๋ง์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฐธ์กฐ์ ๋์ผ์ฑ์ ์์กด์ ์ธ ์ต์ ํ๋ ์์ ์ปดํฌ๋ํธ์ ์ฝ๋ฐฑ์ ์ ๋ฌํ ๋ ์ ์ฉํฉ๋๋ค.
์์
App.js
Box.js
์์กด์ฑ ๊ฐ์ธ size๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง ์ธ๋ผ์ธ ์ฝ๋ฐฑ์ด ๋ณ๊ฒฝ๋๋ค.
https://www.youtube.com/watch?v=XfUF9qLa3mU
https://www.youtube.com/watch?v=e-CnI8Q5RY4&t=22s
https://ko.reactjs.org/docs/hooks-reference.html#usememo