μΌ,
λ©λͺ¨ λ μμ λ₯Όλ³΄κ³ νλͺ©μ μνκ° λ³κ²½λλ©΄ μ 체 λͺ©λ‘μ΄ μ λ°μ΄νΈλλ κ²μ 보μμ΅λλ€. μλ Gifλ₯Ό μ°Έμ‘°νμμμ€. μ΄κ²μ https://react-window.now.sh/#/examples/list/memoized -list-itemsμ μμ λλ€.
νμ¬ λ΄ λͺ©λ‘μ λμΌν λ¬Έμ κ° μμ΅λλ€. λͺ¨λ ListItemμ νμΈλμ΄ μμΌλ©° μ¬μ©μκ°μ΄ νμΈλμ μ ννλ©΄ λͺ¨λ νλͺ©μ΄ λ§μ΄νΈ ν΄μ λκ³ λͺ ννκ² μλ‘ λ§μ΄νΈλ©λλ€. μ λ§ λ리기 λλ¬Έμ ν° λ¬Έμ μ λλ€.
λꡬλ λλ₯Ό λμΈ μ μκΈ°λ₯Ό λ°λλλ€. :)
λλ λκ°μ μ¬μ© μ¬λ‘μ λ¬Έμ λ₯Ό κ°μ§κ³ μμΌλ©° ν΄κ²°μ± μ μ°Ύμ μ μμμ΅λλ€.
νλͺ©μ λ³κ²½νλ©΄ μλ‘μ΄ itemData
κ°μ²΄λ₯Ό μμ±νλ μλ‘μ΄ items
λ°°μ΄ μ΄ μμ± λκΈ° λλ¬Έμ
λλ€. λ©λͺ¨ ν κΈ°μ μ΄ λ¬΄ν¨νλκ³ λ°μ΄ν°κ° λ³κ²½λλ κ²μ΄ μ€μν©λλ€.
μ΄λ¬ν μ’
λ₯μ λ³κ²½μ λν΄ νλͺ©μ΄ λ κ°λ ₯ ν΄ μ§λλ‘νλ €λ©΄ κ³ μ ν areEqual
ν¨μ (λλ shouldComponentUpdate
)λ₯Ό ꡬνν μ μμ΅λλ€.
λ°λͺ¨μ λͺ©μ μ itemData
μ λ©λͺ¨κ° μ΄λ»κ² ν¨κ» μλνμ¬ λ³΅μ‘ν κ°μ μ λ¬νλμ§ λ³΄μ¬μ£Όλ κ²μ
λλ€.
λ΄ shouldComponentUpdate ν¨μλ‘ ν μ€νΈνμ§λ§ κ΅¬μ± μμκ° λ°λ³΅ν΄μ λ§μ΄νΈ ν΄μ λλ©΄μ΄ ν¨μκ° μ€νλμ§ μμ΅λλ€.
κ΅¬μ± μμκ° λ°λ³΅ν΄μ λ§μ΄νΈ ν΄μ λλ κ²½μ°
λ§μ΄νΈ ν΄μ λ κ΅¬μ± μμλ₯Ό λ©λͺ¨ ν λ°©λ²μ΄ μμ΅λλ€. κ·Έκ²μ λ΄ λ°λͺ¨μμ μΌμ΄λλ μΌμ΄ μλλλ€. κ·Έκ²μ΄ λΉμ μ μ±μμ μΌμ΄λλ μΌμ΄λΌλ©΄ λ€λ₯Έ μΌμ΄ μΌμ΄λκ³ μμ΅λλ€. κ·Έλ¦¬κ³ λλ 무μμ λν΄ μΆμΈ‘ ν μ μμ΅λλ€.
@BertelBB ν΄κ²°μ± μ μ°Ύμμ΅λκΉ?
@ffjanhoeck μ λ§ μλλλ€. λ΄ λͺ©λ‘μ μ λ ¬ / νν°λ§ ν μ μλ€λ μ μμ λ΄ μ¬μ© μ¬λ‘κ° μ€μ λ‘ μ½κ° λ€λ₯΄λ€λ κ²μ κΉ¨λ¬μμ΅λλ€. λ΄κ° ν μΌμ λͺ¨λ νλͺ©μ λν ν€ μνμ μλμΌλ‘ μ€μ νλλ‘ itemData λ° itemKey μνμ μ λ¬νλ κ²μ
λλ€. μ 체 λͺ©λ‘μ μ¬μ ν ββμ
λ°μ΄νΈλμ§λ§ μ΄μ λ§νΌ μ§μ°λμ§λ μμ΅λλ€.
https://react-window.now.sh/#/api/FixedSizeList μ¬κΈ°μμ λ΄κ° μ°Έμ‘°νλ μνμ λν΄ μ½μ μ μμ΅λλ€.
@BertelBB μ΄μ μ΄λ―Έ κ·Έ κΈ°λ₯μ ꡬννμ΅λλ€. κ°μ¬ν©λλ€ :)
κ·Έλ¬λ λ¬Έμ λ ν΄κ²°λμ§ μμμ΅λλ€.
λ€μμ μ§μ°λ GIFμ
λλ€. 보μλ€μνΌ νλͺ©μ νμΈνλ λ° λͺ λ°λ¦¬ μ΄κ° 걸립λλ€.
λͺ¨λ κ²μ΄ λ©λͺ¨λκ±°λ shouldComponentUpdateλ₯Ό ꡬννμ΅λλ€.
@ffjanhoeck μ, κ°μ λ¬Έμ κ° μμ΅λλ€. μνκΉκ²λ μ§κΈμ λ μμΈν μ΄ν΄λ³Ό μκ°μ΄ μμ΅λλ€. κ·Έλ¬λ λ λμ ν΄κ²°μ± μ μ°ΎμΌλ©΄ μλ € λλ¦¬κ² μ΅λλ€. :)
@ffjanhoeck μμ GIFμμ 보μ¬
@bvaughn μ λ¬Όλ‘ μ λλ€. μ΄λ©μΌλ‘ μ격 μ¦λͺ μ 보λ΄
μλ μ νλ νλͺ©μ 짧μ 미리보기μμ λΉλ‘―λ κ² κ°μ΅λλ€ (κ·Έλ¦Όκ³Ό 보쑰 ν μ€νΈκ°μλ νλμ ν μ€νΈλ EntityShortPreview κ΅¬μ± μμλ₯Ό λνλ). κ·Έλ¬λ νλμ νλͺ©μλ λ¬Έμ κ°λμ§ μμ΅λλ€. λ¬Έμ λ λͺ¨λ νλͺ©μ΄ λ§μ΄νΈ ν΄μ λκ³ μ ν νλͺ©μ λ§μ΄νΈλλ€λ κ²μ λλ€.μ΄λ₯Ό μμ½νλ©΄ μλκ° λ립λλ€.
κ·Έκ² λ΄ νμ¬ λλμ λλ€ : Dνμ§λ§ μλ§λ λ€λ₯Έ λ¬Έμ λ₯Ό μ°Ύμ μ μμ΅λλ€ :)
μ¬μ©μκ° νλμ νλͺ©μ μ ννλ©΄ λ°μν©λλ€.
@ffjanhoeck λκ°μ λ¬Έμ κ° λ°μνκ³ λͺ κ°μ§ μ‘°μ¬ λμ μμΈμ νμ ν μμμμ΅λλ€. μ΄λ¦μ΄ μ§μ λ κ΅¬μ± μμ λμ νλͺ© λ λλ¬λ‘ μ΅λͺ ν¨μ λ₯Ό μ¬μ©νκ³ μκΈ° λλ¬Έμ λλ€. μ λ React μ λ¬Έκ°λ μλμ§λ§ μ»΄ν¬λνΈκ° λ λλ§κ°μ μΈμ ν μμμ μ λλ‘ λμΌνμ§ μκΈ° λλ¬Έμ μ΄κ²μ΄ Reactμ μ‘°μ μ μλ§μ΄λΌκ³ μκ°ν©λλ€.
μ¬κΈ°μ λ¬Έμ λ₯Ό μ€λͺ νλ CodeSandbox μμ λ₯Ό λ§λ€μμ΅λλ€ : https://codesandbox.io/s/qx4088mn36
λλ μ΄κ²μ΄ μ¬κΈ° λνμ κ΄λ ¨μ΄ μλ€κ³ μκ°ν©λλ€ : https://github.com/bvaughn/react-window/issues/85#issuecomment -436329610
μ€λ μμΉ¨μ νμ΄ λ³Έ νμλ κ·Έκ² μ κ°λ³΄κ³ μλ κ²μ λλ€. (μ΄λ©μΌμ μμ±νμ§λ§ μ€λ¨λμμ΅λλ€.) μΈλΌμΈ ν¨μλ₯Ό μΈμ€ν΄μ€ μνμΌλ‘ μ΄λνλ©΄ μμ μλκ° λΉ¨λΌμ‘μ΅λλ€ (νμ§λ§ μ¬ν μ¬λ‘μ ν¬κΈ°λ‘ μΈν΄ μΆμ ν μκ°μ΄ μμλ λͺ κ°μ§ λ€λ₯Έ λ¬Έμ λ ν΄κ²°νμ΅λλ€).
μ»΄ν¬λνΈκ° λ λκ°μ λμΌνμ§ μκΈ° λλ¬Έμ μ΄κ²μ΄ Reactμ μ‘°μ μ μλ§μΌλ‘ λ§λ λ€κ³ μκ°ν©λλ€.
λ§μ΅λλ€. π
ν . μ΄ λ¬Έμ λ₯Ό νΌνκΈ° μν΄ νμν props νμ° / κΈ°λ₯μ κ΅¬μ± μμ κΈ°λ₯μ΄ λΆμ‘±ν ReasonReactλ₯Ό μ¬μ©νμ¬ νλ‘μ νΈλ₯Ό μμ±νκ³ μκΈ° λλ¬Έμ μ΄κ²μ λΆνν μΌμ λλ€. λλ μ΄κ²μ΄ μ΄λ€ μ μΌλ‘λ react-windowμ λ¬Έμ κ° μλλΌ ReasonMLμ μ ν μμ€ν μ μ ν μ¬νμ΄λΌλ κ²μ μκ³ μμ§λ§ λ€λ₯Έ μ¬λ μ΄μ΄ μ€λ λλ₯Ό μ°μ°ν λ°κ²¬νλ κ²½μ° μΈκΈ ν κ°μΉκ° μλ€κ³ μκ°ν©λλ€.
λͺ ννκ² λ§νλ©΄ λͺ¨λ λ¬Έμ μμ μμ νλͺ© λ λλ§μ΄ μμ κ΅¬μ± μμ μΈλΆμμ μ μλλ κ²μ 보μ¬μ£Όκ³ λ©λͺ¨ ν μμ λ λ μ¬μ΄μμ λ°μ΄ν°λ₯Ό 곡μ νλ λ°©λ²μ 보μ¬μ€λλ€. (κΈ°λ³Έμ μΌλ‘ λ κ°λ²Όμ΄ κΈ°λ³Έ μ 곡 컨ν μ€νΈμ κ°μ΅λλ€.)
μ’μμ, μ κ° μ΄ν΄ λ³Όκ²μ! :)
μ루μ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€! κ°μ¬ν©λλ€. μ’μ ν루 λμΈμ
κ°μ₯ μ μ©ν λκΈ
λͺ ννκ² λ§νλ©΄ λͺ¨λ λ¬Έμ μμ μμ νλͺ© λ λλ§μ΄ μμ κ΅¬μ± μμ μΈλΆμμ μ μλλ κ²μ 보μ¬μ£Όκ³ λ©λͺ¨ ν μμ λ λ μ¬μ΄μμ λ°μ΄ν°λ₯Ό 곡μ νλ λ°©λ²μ 보μ¬μ€λλ€. (κΈ°λ³Έμ μΌλ‘ λ κ°λ²Όμ΄ κΈ°λ³Έ μ 곡 컨ν μ€νΈμ κ°μ΅λλ€.)