๐ค ํ์ต ์๋ฃ์ ๋ชฉํ๊ฒฝํ
React๋ฅผ ์ฌ์ฉํด TodoList๋ฅผ ์ง์ ๊ตฌํํฉ๋๋ค.
styled-component๋ฅผ ์ฌ์ฉํด ์คํ์ผ์ด ์ ์ฉ๋ ์ปดํฌ๋ํธ๋ฅผ ์ฒ์๋ถํฐ ๋ง๋ค ์ ์์ต๋๋ค.
2500๊ฐ์ ํ ์ผ ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๋ฉฐ ๋ ๋๋ง ์ง์ฐ ํ์์ ๊ฒช๊ณ ๋ ๋๋ง ์ต์ ํ๋ฅผ ํตํด ์ด๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
์ปดํฌ๋ํธ ๊ฐ์ํ๋ฅผ ์ ํ๋ฆฌ์ผ์ด์
์ ์ ์ฉํ ์ ์์ต๋๋ค.
1๏ธโฃ Step1 ์๊ตฌ์ฌํญ
MdCheckBoxOutlineBlank,
MdCheckBox,
MdRemoveCircleOutline,
MdAdd
์๋์ ๋งํฌ์ ๊ตฌํ๋ To-do List๋ฅผ ๊ตฌํํ์ธ์.
styled-components ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด style์ ์
ํ์ผํฉ๋๋ค.
๐ Link
Greedy Logo Image๋ /src/asset
์ ์กด์ฌํ๋ฉฐ ์์ด์ฝ์ /public
ํด๋์ ์กด์ฌํฉ๋๋ค.
์๊ตฌ ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ญ์ /์ถ๊ฐ/์ฒดํฌ ๊ธฐ๋ฅ์ด ์์ด์ผ ํ๋ฉฐ App.js(jsx)์์ ๊ตฌํ๋ฉ๋๋ค.
todos ๋ฐฐ์ด์ ์ํ๋ก ๊ด๋ฆฌ๋์ด์ผํ๋ฉฐ ๊ทธ ๋ด๋ถ ๊ฐ์ฒด๋ ์๋์ key๊ฐ์ ๊ฐ์ ธ์ผํฉ๋๋ค.
{
id : i,
text : `ํ ์ผ${i}`,
checked:false,
}
๐ฉ ์๋์ ์ปดํฌ๋ํธ๋ฅผ ์ ์ํ๊ณ ๊ธฐ๋ฅ์ ์ง์ผ์ฃผ์ธ์.
ํ๋ฉด์ ๊ฐ์ด๋ฐ์ ์ ๋ ฌ์์ผ์ฃผ๋ฉฐ, ์ฑ ํ์ดํ(์ผ์ ๊ด๋ฆฌ)๋ฅผ ๋ณด์ฌ์ค. children์ผ๋ก ๋ด๋ถ JSX๋ฅผ Props๋ก ๋ฐ์์ ๋ ๋๋งํฉ๋๋ค.
์๋ก์ด ํญ๋ชฉ์ ์
๋ ฅํ๊ณ ์ถ๊ฐํ ์ ์๋ ์ปดํฌ๋ํธ. state๋ฅผ ํตํด์ ์ธํ์ ์ํ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
๊ฐ ํ ์ผ ํญ๋ชฉ์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๋ ์ปดํฌ๋ํธ. Todo ๊ฐ์ฒด๋ฅผ props๋ก ๋ฐ์์ ์ํ์ ๋ฐ๋ผ ๋ค๋ฅธ ์คํ์ผ์ UI๋ฅผ ๋ณด์ฌ์ค๋๋ค.
todo๋ฐฐ์ด์ props๋ก ๋ฐ์ ์จ ํ, ์ฌ๋ฌ๊ฐ์ TodoListItem ์ปดํฌ๋ํธ๋ก ๋ณํํ ํ ๋ณด์ฌ์ค๋๋ค.
2๏ธโฃ Step2 ์๊ตฌ์ฌํญ
Step1์ ์๊ตฌ์ฌํญ ๊ตฌํ์ ์๋ฃํ๋ค๋ฉด ์๋์ createBulkTodos()ํจ์ ๋ฅผ todos์ํ์ ์ด๊ธฐํํ๋ฉฐ ์ ์ธํด์ฃผ์ธ์.
//App.js
function createBulkTodos ( ) {
const array = [ ] ;
for ( let i = 1 ; i < 2500 ; i ++ )
array . push ( {
id : i ,
text : `ํ ์ผ${ i } ` ,
checked :false ,
} ) ;
}
return array ;
}
function App ( ) {
const [ todos , setTodos ] = useState ( createBulkTodos ( ) ) ;
...some codes ...
}
2500๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ ๋๋งํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์
์ ๋๋ ค์ง๋๋ค. ์ ๋๋ ค์ง๋์ง ์์ธ์ ๋ถ์ ํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ PR ์ ์ ์ด์ฃผ์ธ์.
ReactDevTools -Profiler ๋ฅผ ์ด์ฉํด์ ์ด๋ค ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋๋์ง ํ์ธํ๊ณ ์์ธ์ ๋ถ์ํด ์ปดํฌ๋ํธ ๋ ๋๋ง ์ต์ ํ ์ ๊ฐ์ํ ๋ฅผ ์ด๋ค๋ด๋ณด์ธ์.
์ปดํฌ๋ํธ ์ต์ ํ&๊ฐ์ํ๋ฅผ ์ ์ฉํ๊ธฐ ์ด์ ์ Profiler์ ์คํฌ๋ฆฐ์ท๊ณผ ์ดํ์ ์คํฌ๋ฆฐ์ท์ ์ฐ์ด ๋น๊ตํด์ฃผ์ธ์.
React.memo
useMemo
useCallback
useRef
react-virtualized(๊ฐ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ)
๐งโโ๏ธ ์งํ ๊ฐ์ด๋
์งํ ์๊ฐ: 4์ผ ๋ด์ ์๋ฃํ๋ ๊ฒ์ ๋ชฉํ๋ก ํฉ๋๋ค.