๋ชฉ๋ก
- Introduction
- useMemo
- Conclusion
๐ Introduction
์๋ ํ์ธ์ ์ด๋ฒ ํฌ์คํ ์์๋ useMemo๋ฅผ ์ด์ฉํ์ฌ ์ด์ ์ ์ฐ์ฐ ๋์๋ ๊ฐ์ ๊ธฐ์ตํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. useMemo๋ ์ฃผ๋ก ์ฑ๋ฅ์ ์ต์ ํํ ๋ ์ฌ์ฉ์ ํ๊ฒ ๋ฉ๋๋ค.
๐ useMemo
์ผ๋จ ๋จผ์ countActiveUser๋ผ๋ ํจ์๋ฅผ ํ๋ฒ ์ ์๋ฅผ ํด๋ณด๊ฒ ์ต๋๋ค.
function countActiveUsers(users) {
console.log("ํ์ฑ ์ฌ์ฉ์ ์๋ฅผ ์ธ๋์ค...");
return users.filter((user) => user.active).length;
}
๋จ์ํ๊ฒ user์์ active์ธ ์ซ์๋ง ๊ฑธ๋ฌ์ฃผ๋ ํจ์์ ๋๋ค.
๋ง์ฝ ์ด๋ ๊ฒ ์ฌ์ฉ์ count์ ์ซ์๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํด์ค ๊ฒฝ์ฐ component๊ฐ re render๋ ๋ ๋ง๋ค ๊ฐ์ ์ฌ๊ณ์ฐํด์ฃผ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์ useMemo๋ฅผ ์ฌ์ฉํด์ ์ด๋ฌํ ํ์์ ํด๊ฒฐ ํ ์ ์์ต๋๋ค.
const count = useMemo(() => countActiveUsers(users), [users])
useMomo๋ useEffect์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฒซ๋ฒ์งธ ์ธ์์๋ ํจ์๊ฐ ๋ค์ด๊ฐ๊ฒ ๋์ด์๊ณ ๋๋ฒ์งธ ์ธ์๋ก๋ ๋ฐฐ์ด์ ๋ฐ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋ฐฐ์ด์์ ๊ฐ์ด ๋ณ๊ฒฝ์ด ๋ ๋๋ง ์คํ์ ํ๊ฒ ๋ ๋์ด์์ด์. ๊ทธ๋์ re render์์๋ count์ ์ฐ์ฐ์ค users๊ฐ ๋ฐ๋์ง ์๋ ํ ์ฐ์ฐ์ ๋ค์ ํด์ฃผ์ง๋ ์์ต๋๋ค.
๐ Conclusion
์ด๋ ๊ฒ react์์ ์ต์ ํ ๋ฐฉ๋ฒ์ useMemo๋ฅผ ์ฌ์ฉํด์ ์์๋ณด์์ต๋๋ค. vue์์๋ computed์ ๊ฐ์ ๊ธฐ๋ฅ์ ํ๊ฒ ๋๋๋ฐ react์ชฝ์ด ๋ญ๊ฐ ์กฐ๊ธ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ค๋ฝ์ง ์๋ ๋ผ๋ ์๊ฐ์ ํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ผ ๋ค์ ํฌ์คํ ์์ ๋ง๋์ ์๋ ~!
'React Study' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
React - React.memo (0) | 2020.12.07 |
---|---|
React - useCallback (0) | 2020.12.07 |
React - useEffect (0) | 2020.12.05 |
React - ๋ฐฐ์ด ์กฐ์ํ๊ธฐ (0) | 2020.12.05 |
React - useRef ๋ณ์ ์ ์ธํ๊ธฐ (0) | 2020.12.05 |