λλ useMemoκ° λͺ©λ‘μ΄ μ€ν¬λ‘€λ λ λͺ¨λ νμ (μμ ν) λ€μ λ λλ§νλ κ²μ νΌνλ λ° λμμ΄ λλ€λ κ²μ λ°κ²¬νμΌλ©° λΆλͺ¨ κ΅¬μ± μμ(λͺ©λ‘μ 보μ νλ)κ° λ€μ λ λλ§λ λλ μ΄λ¬ν μΌμ΄ λ°μνκΈ°λ₯Ό λ°λλλ€.
λ°λͺ¨:
https://codesandbox.io/s/v8k75vw0v0
μ€ν¬λ‘€ν λ Actual Row
λ‘κ·Έ λ©μμ§λ μ νμ΄ μμ±λ λλ§ λ°μνλ κ²μ λ³Ό μ μμ΅λλ€.
Rerender parent
λ²νΌμ ν΄λ¦ν κ²½μ°λ κ·Έλ μ§ μμ΅λλ€.
λμ‘°μ μΌλ‘ FakeList
λ _row_λ₯Ό ꡬμ±μμ λμ ν¨μλ‘ μ¬μ©νμ¬ _row_κ° useMemo
λ₯Ό μ¬μ©νλλ‘ ν μ μμ΅λλ€.
κ·Έλμ μ΄κ²μ΄ useMemoλ₯Ό μ΅λν νμ©νλ λ°©λ²μ λν μ§λ¬Έμ΄λΌκ³ μκ°ν©λλ€.
λ¬Έμμ μ΄ λΆλΆμ μ½μΌμ ¨μ΅λκΉ? 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
λ³κ²½λλ©΄ _μλμ μΌλ‘_ νλͺ© μΊμκ° μμλ©λλ€. λλΆλΆμ κ²½μ° μ΄κ²μ΄ λΆμ€ λ°μ΄ν°λ₯Ό λ°©μ§νκΈ° μν΄ μννλ €λ μμ
μ
λλ€. μ΄κ²μ΄ νΉμ μ¬μ© μ¬λ‘μ ν΄λΉλμ§ μλλ€λ κ²μ μκ³ μλ€λ©΄ λΉμ μ΄ ν κ²κ³Ό κ°μ μΌλΆ μ¬μ©μ μ μ λ
Όλ¦¬κ° μ μ ν΄ λ³΄μ
λλ€. π
κ°μ₯ μ μ©ν λκΈ
λ¬Έμμ μ΄ λΆλΆμ μ½μΌμ ¨μ΅λκΉ? https://react-window.now.sh/#/examples/list/memoized -list-items
λ κ°μ§ λ΄μ₯ λ©λͺ¨μ΄μ μ΄μ μ΅μ μ΄ μμ΅λλ€.
React.memo
μμ μμ μ¬μ©νλ κ²μ²λΌ 보μ΄μ§ μμΌλ―λ‘ react-windowκ° μ€νμΌ μΊμλ₯Ό κ΄λ¦¬νλ λ°©μμΌλ‘ μΈν΄ λΆνμν λ€μ λ λλ§μ΄ λ°μν©λλ€.
μ΄ λ¬Έμ λ μ΄ λΌμ΄λΈλ¬λ¦¬μ μΌλΆμμ λ³κ²½ν νμκ° μλ€κ³ μκ°νλ―λ‘ λ«κ² μ΅λλ€. λͺ νν μ§λ¬Έμ΄ μμΌλ©΄ λ μ΄μΌκΈ°ν μ μμ΅λλ€.