React-window: λΆ€λͺ¨κ°€ λ‹€μ‹œ λ Œλ”λ§ν•  λ•Œ _row_ ꡬ성 μš”μ†Œ λ‚΄λΆ€μ˜ useMemo

에 λ§Œλ“  2019λ…„ 02μ›” 18일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: bvaughn/react-window

λ‚˜λŠ” useMemoκ°€ λͺ©λ‘μ΄ 슀크둀될 λ•Œ λͺ¨λ“  행을 (μ™„μ „νžˆ) λ‹€μ‹œ λ Œλ”λ§ν•˜λŠ” 것을 ν”Όν•˜λŠ” 데 도움이 λœλ‹€λŠ” 것을 λ°œκ²¬ν–ˆμœΌλ©° λΆ€λͺ¨ ꡬ성 μš”μ†Œ(λͺ©λ‘μ„ λ³΄μœ ν•˜λŠ”)κ°€ λ‹€μ‹œ λ Œλ”λ§λ  λ•Œλ„ μ΄λŸ¬ν•œ 일이 λ°œμƒν•˜κΈ°λ₯Ό λ°”λžλ‹ˆλ‹€.

데λͺ¨:
https://codesandbox.io/s/v8k75vw0v0

μŠ€ν¬λ‘€ν•  λ•Œ Actual Row 둜그 λ©”μ‹œμ§€λŠ” μƒˆ 행이 생성될 λ•Œλ§Œ λ°œμƒν•˜λŠ” 것을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

Rerender parent λ²„νŠΌμ„ ν΄λ¦­ν•œ κ²½μš°λŠ” 그렇지 μ•ŠμŠ΅λ‹ˆλ‹€.

λŒ€μ‘°μ μœΌλ‘œ FakeList λŠ” _row_λ₯Ό κ΅¬μ„±μš”μ†Œ λŒ€μ‹  ν•¨μˆ˜λ‘œ μ‚¬μš©ν•˜μ—¬ _row_κ°€ useMemo λ₯Ό μ‚¬μš©ν•˜λ„λ‘ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ 이것이 useMemoλ₯Ό μ΅œλŒ€ν•œ ν™œμš©ν•˜λŠ” 방법에 λŒ€ν•œ 질문이라고 μƒκ°ν•©λ‹ˆλ‹€.

πŸ’¬ question

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ¬Έμ„œμ˜ 이 뢀뢄을 μ½μœΌμ…¨μŠ΅λ‹ˆκΉŒ? https://react-window.now.sh/#/examples/list/memoized -list-items

두 가지 λ‚΄μž₯ λ©”λͺ¨μ΄μ œμ΄μ…˜ μ˜΅μ…˜μ΄ μžˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμ œμ—μ„œ μ‚¬μš©ν•˜λŠ” κ²ƒμ²˜λŸΌ 보이지 μ•ŠμœΌλ―€λ‘œ react-windowκ°€ μŠ€νƒ€μΌ μΊμ‹œλ₯Ό κ΄€λ¦¬ν•˜λŠ” λ°©μ‹μœΌλ‘œ 인해 λΆˆν•„μš”ν•œ λ‹€μ‹œ λ Œλ”λ§μ΄ λ°œμƒν•©λ‹ˆλ‹€.

이 λ¬Έμ œλŠ” 이 라이브러리의 μΌλΆ€μ—μ„œ λ³€κ²½ν•  ν•„μš”κ°€ μ—†λ‹€κ³  μƒκ°ν•˜λ―€λ‘œ λ‹«κ² μŠ΅λ‹ˆλ‹€. λͺ…ν™•ν•œ 질문이 있으면 더 이야기할 수 μžˆμŠ΅λ‹ˆλ‹€.

λͺ¨λ“  3 λŒ“κΈ€

λ¬Έμ„œμ˜ 이 뢀뢄을 μ½μœΌμ…¨μŠ΅λ‹ˆκΉŒ? https://react-window.now.sh/#/examples/list/memoized -list-items

두 가지 λ‚΄μž₯ λ©”λͺ¨μ΄μ œμ΄μ…˜ μ˜΅μ…˜μ΄ μžˆμŠ΅λ‹ˆλ‹€.

μ˜ˆμ œμ—μ„œ μ‚¬μš©ν•˜λŠ” κ²ƒμ²˜λŸΌ 보이지 μ•ŠμœΌλ―€λ‘œ react-windowκ°€ μŠ€νƒ€μΌ μΊμ‹œλ₯Ό κ΄€λ¦¬ν•˜λŠ” λ°©μ‹μœΌλ‘œ 인해 λΆˆν•„μš”ν•œ λ‹€μ‹œ λ Œλ”λ§μ΄ λ°œμƒν•©λ‹ˆλ‹€.

이 λ¬Έμ œλŠ” 이 라이브러리의 μΌλΆ€μ—μ„œ λ³€κ²½ν•  ν•„μš”κ°€ μ—†λ‹€κ³  μƒκ°ν•˜λ―€λ‘œ λ‹«κ² μŠ΅λ‹ˆλ‹€. λͺ…ν™•ν•œ 질문이 있으면 더 이야기할 수 μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μ‹œ μ•ˆλ…•,

λ‚΄ μ˜ˆλŠ” λ‚΄κ°€ ν‘œν˜„ν•˜λ €κ³  ν–ˆλ˜ 것에 λŒ€ν•΄ κ°€μž₯ 웅변적이지 μ•Šμ•˜μ§€λ§Œ μ§€κΈˆμ€ ν•  수 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

κ·€ν•˜μ˜ μ˜ˆμ œμ—μ„œ μ‹œμž‘ (memoized -리슀트 ν•­λͺ©) λ§Œλ³΄κΈ°μ— μ™€μ„œλ €κ³ ν•˜λŠ” _rows_ λ Œλ”λ§μ˜ 상단에, λ‚˜λŠ” 당신이 ν•­λͺ©μ„ ν΄λ¦­ν•˜λ©΄ ν˜„μž¬ ν™œμ„±ν™”ν•˜κΈ° (ν•­λͺ©μ„ _activate_ λ•Œ λ˜ν•œμ΄ λ Œλ”λ§ μ΅œμ†Œν™”ν•˜λ €λ©΄ , 보기의 λͺ¨λ“  _rows_κ°€ λ‹€μ‹œ λ Œλ”λ§λ©λ‹ˆλ‹€).

λ‚˜λŠ” κ²°κ΅­ FixedSizeList 에 itemData μ†Œν’ˆμ„ μ‚¬μš©ν•˜λŠ” 것을 λ‹¬μ„±ν–ˆμŠ΅λ‹ˆλ‹€(이λ₯Ό 톡해 쀑첩 ν΄λ‘œμ €λ₯Ό ν”Όν•  수 있음). 이것은 μ°¨λ‘€λ‘œ useMemo ν•©λ‹ˆλ‹€.

이 λ¬Έμ œλŠ” μ’…λ£Œλœ μƒνƒœλ‘œ μœ μ§€λ˜μ–΄μ•Ό ν•˜μ§€λ§Œ ν₯미둜운 예/μ΅œμ ν™” μ—°μŠ΅μ΄λΌκ³  μƒκ°ν•˜λ©° μΆ”κ°€ μ˜κ²¬μ„ λ³΄λ‚΄μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.

κ²°κ³ΌλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. https://codesandbox.io/s/rr7w89w3q

래퍼 λΉ„μš©μœΌλ‘œ EXPENSIVE RENDER λ₯Ό ν”Όν•©λ‹ˆλ‹€: CHEAP PREP .

이 λΌμ΄λΈŒλŸ¬λ¦¬μ— μŸμ€ λ…Έλ ₯에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.

λ„€, 이해가 λ©λ‹ˆλ‹€. itemData λ³€κ²½λ˜λ©΄ _μ˜λ„μ μœΌλ‘œ_ ν•­λͺ© μΊμ‹œκ°€ μ†μƒλ©λ‹ˆλ‹€. λŒ€λΆ€λΆ„μ˜ 경우 이것이 λΆ€μ‹€ 데이터λ₯Ό λ°©μ§€ν•˜κΈ° μœ„ν•΄ μˆ˜ν–‰ν•˜λ €λŠ” μž‘μ—…μž…λ‹ˆλ‹€. 이것이 νŠΉμ • μ‚¬μš© 사둀에 ν•΄λ‹Ήλ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것을 μ•Œκ³  μžˆλ‹€λ©΄ 당신이 ν•œ 것과 같은 일뢀 μ‚¬μš©μž μ •μ˜ 논리가 μ μ ˆν•΄ λ³΄μž…λ‹ˆλ‹€. πŸ‘

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰