2024-03-18.md
๐กDIL: ๋ชจ๋ ๋ฆฌ์กํธ ๋ฅ ๋ค์ด๋ธ, 3์ฃผ์ฐจ-1
์คํฐ๋: ์๊ฐ CS, https://github.com/monthly-cs/2024-03-modern-react-deep-dive
์ค๋ ์งํ: ๊ฐ์ธ๊ณต๋ถ
DIL-week3-1_2024-03-18
| DIL ์ฃผ์ฐจ | ๋ฒ์ | ๋ด์ฉ | ์ค๋์ฐจ ์ง๋ | | -------- | ------ | ------------------------------------------------------ | ----------- | | 3์ฃผ์ฐจ | 6, 7์ฅ | ๋ฆฌ์กํธ ๊ฐ๋ฐ๋๊ตฌ ๋๋ฒ๊น , ํฌ๋กฌ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ํ์ฉํ ๋ถ์ | 401p~ |
์ค๋ ์ฝ์ ๋ด์ฉ์ markdown์ผ๋ก ๊ฐ๋จํ ๋ฉ๋ชจ
์ฝ์ ์๊ฐ: 9์~10์ 45๋ถ
๋ฆฌ์กํธ ๊ฐ๋ฐ ๋๊ตฌ๋ก ๋๋ฒ๊น ํ๊ธฐ
๋ฆฌ์กํธ ๊ฐ๋ฐ ๋๊ตฌ๋?
- react-dev-tools: ํฌ๋กฌ, ํํญ, ์ฃ์ง
Component ๋ฉ๋ด: Netflix ์ดํด๋ณด๊ธฐ
- ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์ ํธ๋ฆฌ ๊ตฌ์กฐ
- ์ต๋ช ํจ์๋ฅผ default๋ก exportํ ๊ฒฝ์ฐ: AnonymousDefaultComponent
- (memo) ํจ์๋ช ์ถ๋ก x. memo ๋ผ๋ฒจo: Anonymous
- (HOC) ๊ณ ์ฐจ ์ปดํฌ๋ํธ์, ๊ณ ์ฐจ ์ปดํฌ๋ํธ๋ก ๊ฐ์ผ ์ปดํฌ๋ํธ: Anonymous
- ๋ฌด๊ธฐ๋ช
ํจ์์ displayName ์์ฑ์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ ์์
MemoizedComponent.displayName = '๋ฉ๋ชจ ์ปดํฌ๋ํธ'
- (displayName, ๊ธฐ๋ช ํจ์) ๊ฐ๋ฐ ๋ชจ๋์์๋ง ์ฐธ๊ณ : terser ๋ฑ ์์ถ ๋๊ตฌ๊ฐ ์ปดํฌ๋ํธ๋ช ๋์ํ, displayName์ ๋น๋ ๋๊ตฌ๊ฐ ์ญ์
์ปดํฌ๋ํธ ๋๊ตฌ Component
-
๐๏ธ: Element ํญ + ๋๋๋ง๋ HTML ์์ ์ ํ
-
๐ชฒ: console.log์ Props, Hooks, Nodes
Props: { as: "p", children: { $$typeof: Symbol(react.element), key: null, props: {children: '์ฝํ ์ธ ๋ฅผ ์ ์ฅํด ์ด๋ ์ค์๋ ์ฆ๊ธฐ๋ ์ ๋ฐํ ๊ฒฝํ.'}, ref: null, type: { $$typeof: Symbol(react.forward_ref), displayName: 'Styled(span)', defaultProps: undefined, __emotion_real: {โฆ}, render: ฦ, ... } _owner:null, }, color:"WhiteT70", variant:{xs: 'BodyStandard', l: 'Subtitle'}, } Hooks:[ { id: null, isStateEditable: false, name: "a", subHooks: [ { id: null, isStateEditable: false, name: "Context", value: { theme: "dark", internalHasProvider: true, }, subHooks: [], hookSource: { lineNumber: 1, functionName: "a", fileName: "https://assets.nflxext.com/web/ffe/wp/signup/nmhp/nmhpFrameworkClient.js.456145d0d707f996a700.js", columnNumber: 1404288, }, }, ], hookSource: { lineNumber: 7, columnNumber: 89727, fileName: "https://assets.nflxext.com/web/ffe/wp/signup/nmhp/nmhpFrameworkClient.js.456145d0d707f996a700.js", }, }, ]; Nodes: [p.default-ltr-cache-dk1xic.euy28771]
| console | ๋ด์ฉ | | ------- | ------------------------------------------------------ | | Props | card, onRenderComplete, setFirstCardImage | | Hooks | hookSource, id, isStateEditable, name, subHooks, value | | Nodes | ๋ ธ๋ element ๋ฐฐ์ด |
-
<>
: view source code for this element- ๋ณ์
- copy value to clipboard
- store as global variable: window.$r // ์ ์ญ๋ณ์๋ก ๋ณด๊ด
- ํจ์
- go to definition
- hooks
- use๊ฐ ์๋ต๋ ๋ชจ์ต์
- ์ปค์คํ ํ ๋ ๋์ด
- ํ ์ ๋๊ฒจ์ฃผ๋ ํจ์ ๊ธฐ๋ช ํจ์๋ฉด ํ์ธo
- rendered by
- ๋๋๋ง ์ฃผ์ฒด
- ๋ณ์
Profiler
- Flamegraph, Ranked, Timeline
- ๋๋๋ง ๊ณผ์ ์ ๊ฐ์
ํด ๋๋ฒ๊น
์ ํ์ํ ๋ด์ฉ์ ๊ธฐ๋ก => ํ๋ก๋์
์์ ์ฌ์ฉx
- ๊ฐ๋ฐ ๋ชจ๋์ ๋ฆฌ์กํธ ์ ํ๋ฆฌ์ผ์ด์ ์ค๋น~
- ๋๋ Commit ๋ณ๋ก ์ด๋ค ์์ ์ด ์์ด๋ค๋
- ๋๋น: ๋๋๋ง ์๊ฐ
- Timeline์ timestamp๋ก effect ๋์ ํ์ธ
=> ์ฝ๋ ๋ง์์ ธ์ ์ ๋๊ธฐ ํ๋ค์ด์ง๊ธฐ ์ ์ ๋๋ฒ๊น ํด์ ๋ฒ๊ทธ ๋ฐฉ์ง ํด์ผ ํ๋ค
=> ๋๋ฒ๊น ํด ์ ํ์ฉํ๊ธฐ
ํ์ธ ๋ด์ฉ
- ํ๋กํ์ผ๋ง json ๋ด๋ณด๋ด๊ธฐ
- ๋๋ ์ปค๋ฐ ์ ๋ณด
- ํ์๋ผ์ธ
- ๋ญํฌ
- ์ต๋ช ํจ์ default export
- store as global variable