Intro
์ค๋์ ํ๋ก์ ํธ ์ต์ ํํ๋ ๊ณผ์ ์ ์ค์ตํ๋ค.
์๊ฐ๋ณด๋ค ๋ ๋๋ง ํ ํ์ ์๋ ์ปดํฌ๋ํธ๋ค์ด ๊ณ์ ๋ ๋๋ง ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ค.
๊ฐ๋ฐํ ๋ ๋ถํ์ํ ๋ ๋๋ง์ด ๋ฐ์ํ์ง ์๊ฒ ์ ๊ฒฝ์ ์จ์ผ๊ฒ ๋ค.
์ค๋ ํ์ตํ ๋ด์ฉ
ํ๋ก์ ํธ ์ต์ ํ
Chrome ๊ฐ๋ฐ์ ๋ชจ๋์์ React Developer Tools์ Components๋ฅผ ์ ํ ํ
'Highlight updates when components render.' ๋ฅผ ์ฒดํฌํ์ฌ ์ ๋ฐ์ดํธ ๋ ๋ ๋ ๋๋ง๋๋ ์ปดํฌ๋ํธ๋ฅผ ์ฐพ์ ์ ์๋ค.
๋ ๋๋ง ๋ ํ์๊ฐ ์๋ ์ปดํฌ๋ํธ๋ค์ด ๋ ๋๋ง ๋๋ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์ React.memo ๋ฑ์ผ๋ก ๋ ๋๋ง๋์ง ์๊ฒ ํ๋ก์ ํธ ์ต์ ํ๋ฅผ ์งํํ๋ค.
- state ๊ฐ์ ๋ฐ๊ฟ ๋ useCallback์ ์ฌ์ฉํ์ง ์๊ณ ๋ฐ๋ก ํจ๋ค๋ฌ์ ์ํ๋ณํ ํจ์ ์์ฒด๋ฅผ ์ ๋ฌํ๋ฉด ๋ ๋๋ง์ด ์ผ์ด๋์ง ์๋๋ค.
const [sortType, setSortType] = useState('latest');
const [filter, setFilter] = useState('all');
return (
...
<ControlMenu value={sortType} onChange={setSortType} optionList={sortOptionList} />
<ControlMenu value={filter} onChange={setFilter} optionList={filterOptionList} />
...
)
๋ง๋ฌด๋ฆฌ
๊ฐ์ ์ผ๊ธฐ์ฅ ํ๋ก์ ํธ๊ฐ ๋ง๋ฌด๋ฆฌ ๋์ด๊ฐ๋ ์์ ์์ ๊ฐ์๋ฅผ ๋ณด์ง ์๊ณ ์ง์ ๊ตฌํํ๋ฉฐ ๋ณต์ตํ๊ณ ์๋ค.
ํผ๊ทธ๋ง ๋ณต์ตํ ๊ฒธ ํผ๊ทธ๋ง๋ก ์ง์ ๋์์ธ๋ ํด๋ณด์๋๋ฐ ์๊ฐ๋ณด๋ค ์ด๋ ต๊ณ ์๊ฐ๋ ์ค๋ ๊ฑธ๋ ธ๋ค.
๊ทธ๋๋ ํผ์ ์ด๋ ๊ฒ ๊ตฌํํด๋ณด๋ ๊ณผ์ ์์ ๋ ๋ง์ ๊ฒ์ ๋ฐฐ์ด ๊ฒ ๊ฐ๋ค.