FlatList
κ΅¬μ± μμλ λ무 λ²κ·Έκ° λ§μ΅λλ€.
μ΄λ¬ν νλ¬κ·ΈμΈμ ν₯λ―Έλ‘μ΄ λμ²΄λ¬Όμ΄ λ μ μμ΅λλ€.
λ κ°μ§ μ£Όμ λ¨μ :
ScrollView
νμ₯ν©λλ€.FlatList
μ λλ½ λ κΈ°λ₯μ ꡬννμ§ μμ΅λλ€.μμ§ν FlatList
μ¬μ©ν μ μμ΅λλ€. react-native-snap-carousel
(λ΄κ° BTWλ₯Ό μ’μν¨)μ λν ν΄κ²° λ°©λ²μ initialNumToRender
μ data.length
μ
λλ€. μ΄κ²μ΄ λ²κ·Έμλ λ²μ μ μ»λ μ μΌν λ°©λ²μ
λλ€.
μ΄κ²μ λ΄ μ€μΉ ν μ€ν¬λ¦½νΈμ μΌλΆμ
λλ€.
# Stupid bug in flat list.
# <strong i="11">@see</strong> comment in ListCarousel.tsx
sed -i.bak -e "s/initialNumToRender={initialNumToRender}/initialNumToRender={data.length}/" node_modules/react-native-snap-carousel/src/carousel/Carousel.js
μ΄μ react-native-snap-carousel
initialNumToRender
κ° μΈλΆμμ Carousel.js
λ₯Ό ν¨μΉ ν νμκ° μμ΅λλ€.
λλ λν κ²μ μ£Όμ₯ ν κ²μ΄λ€ Carousel.js
μ€μ ν μ μμ΅λλ€ initialNumToRender
μ data.length
νλͺ©μ μμ λ²νΈ 100 (λͺ¨λ μ¬μ© μ¬λ‘μ μλ§ 90 %) λ―Έλ§μΈ κ²½μ° κΈ°λ³Έμ μΌλ‘.
μμμ μ°Ύμ λ λΌμ΄λΈλ¬λ¦¬ μ€ react-native-largelist
λ§€μ° ν₯λ―Έ λ‘μ΅λλ€. λλ½ λ κΈ°λ₯μ ν΄κ²°νκ±°λ μμ±μκ° μΆκ°νλλ‘ μ€λ ν μ μμ΅λκΉ?
μλ νμΈμ @PublicParadise ,
μ, initialNumToRender
λ μ¬μ μ κ°λ₯ν μνμ μΌλΆμ΄λ―λ‘ ν¨μΉμμ΄ <Carousel initialNumToRender={data.length} />
λ₯Ό μ¬μ©ν μ μμ΄μΌν©λλ€. ;-) μλν΄ λ³΄μμΌλ―λ‘ μ λλ‘ μλνλμ§ λ³΄μ₯ ν μ μμ΅λλ€. # 235.
κ·Έλ¬λ κ·Έλ κ²ν΄μΌνκ³ λ°λΌμ FlatList
μ ν¨κ» μ 곡 λλ μ±λ₯ μ΅μ νλ₯Ό μμ μ€λΉκ° λμμΌλ©΄ useScrollView
λ₯Ό true
μ€μ νλ κ²μ΄ μ’μ΅λλ€ FlatList
λ₯Ό μμ ν μ°ννκΈ° μν΄μ΄ μνμ λμ
νμ΅λλ€. λν, κ°μ λ©μ§ κΈ°λ₯μ λμ
ν μ μμ΅λλ€ μ΄κ² : P
μ κ° κ³ λ €νκ³ μλ λ κ°μ§ νλ¬κ·ΈμΈμ κ΄ν΄μλ λ¨Όμ λ§μ ν
μ€νΈλ₯Ό μ€νν΄μΌν©λλ€. react-native-largelist
μ μμ±μκ° λλ½λμμ§λ§ νμν κΈ°λ₯μ ꡬννλλ‘ μ€λ ν μ μλ€λ©΄ νμ€ν λμμ΄ λ κ²μ
λλ€!
μ μκ° κ·Έλ§λλ©΄ μ μ§ ν μ μκΈ° λλ¬Έμ (JSλ₯Ό μΈμνλ λ° λ¬Έμ κ° μμ§λ§) νμ¬λ‘μλ λ€μ΄ν°λΈ νλ¬κ·ΈμΈμ κΈ°λ°μΌλ‘ μ체 νλ¬κ·ΈμΈμ κΈ°λ°μΌλ‘ μμ μ΄ μλ€κ³ μκ°ν©λλ€.
μλ νμΈμ @ bd-arc,
ν μ£Όμ
μ κ°μ¬ν©λλ€. μμ§ν λ§ν΄μ FlatList
λ무 λ΅λ΅ν΄μ ν΅μ λ°°μΉνκ³ κ΅¬μ± μμλ₯Ό λ€μλ 건λλ¦¬μ§ μμμ΅λλ€. κ·Έ λΉμ initialNumToRender
λ μ¬μ μ ν μμλ μνμ΄ μλμκ³ useScrollView
λ λ λμ κ² κ°μ΅λλ€.
FlatList
μ Animated
λν μ΄μν μ’
μμ±μ΄μλ κ² κ°μ΅λλ€. μλ§λ λλΆλΆμ μ¬λλ€μ΄ λ¬Έμ λ₯Ό κ²ͺλ κ³³μΌ κ²μ
λλ€. λΆκ³Ό 6 μΌ μ μ λκ΅°κ°κ° κ·Έκ²μ λν΄ μλ‘μ΄ λ²κ·Έ λ₯Ό
λ μμ λ FlatList
λ₯Ό κ΅μ²΄νλ €κ³ νκ³ λͺ κ°μ§ μ‘°μ¬λ₯Όνμ΅λλ€. λͺ©λ‘μ μ°½μΌλ‘ λ§λ€κ³ 보기μμλ κ²μ λ λλ§νλ κ²μ μ΄λ €μ΄ λ¬Έμ λ‘ κ°μ£Όλμ§ μλ κ² κ°μ΅λλ€. RxJS / most.js μ루μ
μ΄ κ°μ₯ λ§μμ λ€μμ΅λλ€.
μ΄ λ κ°μ§ μ루μ μ€ νλλ₯Ό λμ²΄λ‘ κ΅¬ννλ λ° νμ΄μ΄ μμμ΅λκΉ?
μλμ, μ‘°μ¬ λ§νμ΅λλ€. κ·Έ λΉμ λλ κ·Έλ€μ΄ κ²°κ΅ FlatList
κ³ μΉ κ²μ΄λΌκ³ μ¬μ ν λ°λΌκ³ μμμ΅λλ€.
λ΄ μ°κ΅¬μμ μ»μ λͺ κ°μ§ λ§ν¬λ₯Ό 곡μ νκ² μ΅λλ€.
νμ§λ§ κΈ°λ³Έ νλ¬κ·ΈμΈ ( react-native-largelist
)μ΄ μ¬λ°λ₯Έ λ°©λ²μ΄λΌκ³ μκ°ν©λλ€.
μ°κ΅¬λ₯Ό 곡μ ν΄ μ£Όμ μ κ°μ¬ν©λλ€ π
μμ§ν λ§ν΄μ μ§κΈμμ΄ λͺ¨λ κ²μ μνν΄λ³Ό μκ°μ΄ μμ΅λλ€. react-native-largelist
λ°μ΄ λ€κ³ μΆλ€λ©΄ ν° λμμ΄ λ κ²μ
λλ€. κ·Έλ μ§ μλ€λ©΄ μλ‘ κ²μνλλ‘ν©μλ€ ;-)
@ bd-arc μ¬κΈ°μ λ§μ°¬κ°μ§λ‘, λλ κ½€ κΉλ€λ‘μ΄ μΌμνκ³ μμΌλ©° μκ°κ³Ό μμμ΄ μ νλμ΄ μμ΅λλ€.
BindingListView
μμ΅λλ€. νμ§λ§ μ : μλ‘λ₯Ό 루νμ μ μ§ν©μλ€ :)
μ, Tal Kolμ React Native λ° μ±λ₯ μ΅μ νμ λν μ΅κ³ νμ§μ κΈ°μ¬λ₯Ό μμ±νμ΅λλ€.
λν Wixμ νλ¬κ·ΈμΈ react-native-interactable
μ νΉν κ΄μ¬μ΄ μμμ§λ§ μνκΉκ²λ μ΅κ·Όμλ μ±κ°μ λ¬Έμ λ₯Ό ν΄κ²°ν μκ°μ΄ μμμ΅λλ€.
@ bd-arc recyclerlistview
νμ₯ ScrollView
μ λ¬Έμ μ μ 무μμ
λκΉ? large-list
λ° FlatList
λͺ¨λ λμΌνκ² λΉλλ©λλ€.
λλ recyclerlistviewλ₯Ό μμ±νκ³ μ΅κ·Όμ μ°λ¦¬ νμμ΄ μΊ λ¬μ
κ΅¬μ± μμλ₯Ό μ¬μ©νμ΅λλ€. FlatListλ₯Ό recyclerlistviewλ‘ λ°κΎΈμκ³ νλ₯νκ² μλν©λλ€.
μλ νμΈμ @naqvitalha , λΉλ μ£Όμ μ κ°μ¬ν©λλ€!
λ΄ κ²½νκ³Ό μ§κΈκΉμ§ ScrollView
κΈ°λ°μΌλ‘ κ΅¬μΆ λ λͺ¨λ νλͺ©μ μ²λ¦¬ ν νλͺ© λ° / λλ κΈ°λ₯ μ νμ΄ μμ²λκ² λ§μ λ κΆκ·Ήμ μΌλ‘ μ±λ₯ μ νμ 보μ¬μ€λλ€. κ·Έλ¬λ λ΄ λͺ©νλ νλ¦° κ²μΌλ‘ μ
μ¦λλ κ²μ΄λ―λ‘ μμ¬νμμμ€ ;-)
κ΄λ²μνκ³ μ² μ νκ² ν μ€νΈ ν μ μλλ‘μ΄ μ§νμ λν PRμ μ μΆνλ λ° κ΄μ¬μ΄ μμ΅λκΉ?
@ bd-arc λ¬Όλ‘ μ λλ€. κ·Έλ κ²νκ² μ΅λλ€.
@naqvitalha @ bd-arc flatlist
λ₯Ό recyclerlistview
λ‘ λ체νκΈ°μν PRμ μν μ
λ°μ΄νΈκ° μμ΅λκΉ? λλ κ·Έκ²μ μ¬μ©νκ³ μΆλ€
ScrollView
FlatList
λ° recyclerlistview
μ κ΄λ ¨μ΄ μμ§λ§ react-native-gesture-handler κ°μ΄ libλ₯Ό κ°μ ν μμλ λ°©λ²μ μ΄ν΄λ³Έ μ¬λμ΄ μμ΅λκΉ?
λ¬Έμμμ :
μ΄ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ©΄ μ μ€μ²κ° λ μ΄μ JS μλ΅μ μμ€ν μ μν΄ μ μ΄λμ§ μκ³ λμ UI μ€λ λμμ μΈμλκ³ μΆμ λ©λλ€. ν°μΉ μνΈ μμ© λ° μ μ€μ² μΆμ μ΄ μν ν λΏλ§ μλλΌ μ λ’°ν μ μκ³ κ²°μ μ μ λλ€.
react-native link
μ΄ νμν©λλ€.μ΄ lib μ’
μμ±μ 무λ£λ‘ μ μ§νλ€λ μ μμ λΆνν μΌμ
λλ€. κ·Έλ¬λ νμ¬ Expo / CRNAμ ν¬ν¨λ©λλ€.
μλ νμΈμ @ pcooney10 ,
μ΄μ μ ScrollView
/ FlatList
μμ μ¬μ©μ μ§μ PanResponder
ꡬνμ κ³ λ €νμ΅λλ€ (# 40μμ λ³Ό μ μμ).
react-native-gesture-handler
λΉμ·ν κ²μ μλν΄ λ³΄μ
¨μ΅λκΉ? μ΄κ²μ΄ ν©λ²μ μΈ μμ΄λμ΄μΈμ§ μλλ©΄ κ΄κΈ°μ μ§μ μ μΈ λ°©λ²μΈμ§ νλ¨νκΈ° μν΄ νΌλλ°±μ λ°κ³ μΆμ΅λλ€.
@amitassaraf μ΄ μ»΄ν¬λνΈμ κ³μ½μ propsκ° μ λ¬λκΈ° λλ¬Έμ FlatListμ λ§€μ° μ μ¬ν©λλ€. RLV λ μ΄μμ 곡κΈμλ νμμ λλ€. λΈλ μ΄νΉ 체μΈμ§μ΄κ±°λ μλ‘μ΄ λͺ¨λλ₯Ό λμ ν΄μΌν©λλ€.
μλ
νμΈμ μ¬λ¬λΆ,μ΄ κ΅¬μ± μμλ₯Ό μ¬μ©ν κ²½νμ μ‘°κΈ κ³΅μ νκ³ μΆμ΅λλ€. ScrollView
λ΄μμ μ¬μ©ν΄μΌνλλ°, removeClippedSubviews
μμ±μ λνλ΄λ κ²λ³΄λ€ λͺ¨λ νλͺ©μ΄ λ λ§μ΄ νμλλ€λ λ¬Έμ κ° λ°μνμ΅λλ€. μμκ° λ©λͺ¨λ¦¬μμ μμ λμ§ μμ΅λλ€. κ·Έλ μ§ μμΌλ©΄ κ° κ²½λ‘κ° μ±μ΄ Android μμ RAM λ©λͺ¨λ¦¬λ₯Ό μλͺ¨νλλ‘νλ μ μμλ₯Ό μμ±νμ΅λλ€. ScrollView
( λλ λ€λ₯Έ λͺ©λ‘ ) λ΄ λͺ©λ‘μ μ¬λ°λ₯Έ μμ
μ μ»μΌλ €λ©΄ λ€μ FlatList
μμ±μ μ¬μ©νμΈμ.
maxToRenderPerBatch={4}
initialNumToRender={4}
windowSize={4}
removeClippedSubviews={Platform.OS != 'ios'}
κ·νμ κ²½μ°μ λ°λΌ κ·νμ νμμ κ°μ₯ μ ν©ν κ°μ κ΅¬μ± ν μ μμ΅λλ€. μ΄λ° μμΌλ‘ κ±°μ λ©λͺ¨λ¦¬ λμ μμ΄ μμλλ μ±λ₯μ μ»μ μ μμ΅λλ€.
@ machester4 κ²°κ³Όλ₯Ό 곡μ ν΄ μ£Όμ μ κ°μ¬ν©λλ€! μ΄ κ°μ λͺ¨λ μ¬λμ μ¬μ© μ¬λ‘μ λ§μ§ μμ§λ§ μ κ·Ό λ°©μμ 건μ ν©λλ€ ;-)
ν΄λΉ λ
Όλ¦¬λ₯Ό μμ§ λͺ©λ‘ λ΄μμλ μν λͺ©λ‘μ μ μ© ν μ μμ΅λλ€. μ κ²½μ°μλ λͺ¨λ κ°λ‘ λͺ©λ‘μ ν λ²μ 3 κ°μ μμκ° νμλ©λλ€. μ΄λ¬ν μ΄μ λ‘ κ°μ maxToRenderPerBatch
μ΄κ³ initialNumToRender
λ 4 μ μμΌλ©° μ¬μ©μμκ² λ λμ κ²½νμ μ 곡ν©λλ€.
@naqvitalha FlatListλ₯Ό μΊ λ¬μ λ΄λΆμμ RecylerViewλ‘ λ체 ν λ°©λ²μ 곡μ ν΄ μ£Όμκ² μ΅λκΉ? λν RecyclerViewμμ https://github.com/facebook/react-native/issues/20500 κ³Ό κ°μ κ²μ μ§μν©λκΉ?
@ bd-arcμ£Όμ, μ΄κ²μ΄ react-native-snap-carousel
ν΄λΌμ΄μΈνΈμ μν₯μ λ―ΈμΉ κ²μ΄λΌκ³ νμ ν©λλ€.
https://github.com/facebook/react-native/issues/21070
@PublicParadise ν€λ μ μ κ°μ¬λ립λλ€!
FlatList
λλκ²λ λ©μΆμ§ μμ΅λλ€ ... InteractionManager
κ° μ΄λκ°μμ μ€ν μ€μΌ μ μμΌλ―λ‘ κ΅¬μ± μμ λ
Όλ¦¬μ μ€νμ μ°κΈ°ν©λλ€.
νμ€ν FlatList
μ κ±° ν λμ
λλ€ :-)
μλ νμΈμ, μ§κΈκΉμ§μ΄ λΆμΌμ λν μ λ°μ΄νΈκ° μμ΅λκΉ?
μ€μ λ‘ FlatList
μλ μ λ§ νλ₯ν λͺ©λ‘ κ΅¬μ± μμκ°λκΈ° μν΄ νμν κ²μ΄ μμ΅λλ€.
λΉ μ§ κ²μ UITableView
κ° iOSμμ κ°μ§κ³ μλ "μμ ν λμ΄"κ°λ
μ
λλ€.
λ°λΌμ "ν΄μ»€ 리μ νΈλ¦μ μννκΈ° μν΄ λΉλκΈ° μ μΌλ‘ λ μ΄μμν΄μΌνλ ν μ"μ λν μμ±μ΄ νμνμ§ μμ΅λλ€.
λ΄κ° λ§νλ―μ΄ estimatedRowHeight
μμΌλ©΄λ©λλ€ (μλ§λ νλΉ λ€λ₯Έ μΆμ μΉλ₯Ό νμ©νλ μ½λ°±μ΄ μμ§λ§ μ¬μ ν μΆμ μΉμ
λλ€!).
λ°λΌμ μ½ν μΈ ν¬κΈ°λ λμ μΌλ‘ λ³κ²½λμ§λ§ λ§μ§λ§ νλͺ©μ΄λ λ€λ₯Έ μΈλ±μ€λ‘ μ€ν¬λ‘€ ν μ μκ³ κ²°ν¨μμ΄ λλ¬ ν μ μκΈ° λλ¬Έμ μ무λ μ κ²½ μ°κ±°λ λλΌμ§ μμ κ²μ λλ€. μ€ν¬λ‘€νλ λμ λλ½ λ νλͺ©.
μλ νμΈμ @naqvitalha ,μ΄ κ΅¬μ± μμμ λν΄ νλ«λ¦¬μ€νΈλ₯Ό RLVλ‘ λ§μ΄κ·Έλ μ΄μ ν μ§μ μ΄λ PRμ΄ μμ΅λκΉ? λμκ² λ§€μ° μ μ© ν κ²μ λλ€. κ°μ¬.
λ΄ κ΅¬μ± μμλ₯Ό μ¬μ©ν΄ μ£Όμ μ κ°μ¬ν©λλ€.
κ±°μ λͺ¨λ μ₯λ©΄μ λν΄ λ€μκ³Ό κ°μ΄ν΄μΌν©λλ€.
<Carousel containerCustomStyle={{flex:1}} contentContainerCustomStyle={{flex:1}} renderItem={()=><LargeList ...props/>}/>
κ·Έλ¦¬κ³ Carouselμ λͺ¨λ μμ νλͺ©μ { flex : 1 } μ€νμΌμ΄ ν¬ν¨λμ΄ μλμ§ νμΈν©λλ€.
μ΄ νμμ£Όμνμμμ€.
LargeList default has a {flex:1} styleοΌplease be sure its parent has a bounded height.
LargeListμ νλͺ©μ΄ LargeListμ ν¬κΈ°μ λ§λλ‘νλ €λ©΄ LargeListκ° μ λλ‘ μλνμ§ μμ΅λλ€. LargeList ν¬κΈ°κ° λΆλͺ¨ λλ μ νλ λμ΄μμ μμλμλμ§ νμΈν΄μΌν©λλ€.
μ€κ΅μ΄λ₯Ό μ΄ν΄νλ€λ©΄ μ μ ν μμ΄λ₯Ό μ©μνμμμ€. μ΄ λ¬Έμ νμΈ
FlatList
κ΅¬μ± μμλ λ무 λ²κ·Έκ° λ§μ΅λλ€.μ΄λ¬ν νλ¬κ·ΈμΈμ ν₯λ―Έλ‘μ΄ λμ²΄λ¬Όμ΄ λ μ μμ΅λλ€.
* https://github.com/Flipkart/recyclerlistview * https://github.com/bolan9999/react-native-largelist
μνλ€
κ°μ₯ μ μ©ν λκΈ
@PublicParadise ν€λ μ μ κ°μ¬λ립λλ€!
FlatList
λλκ²λ λ©μΆμ§ μμ΅λλ€ ...InteractionManager
κ° μ΄λκ°μμ μ€ν μ€μΌ μ μμΌλ―λ‘ κ΅¬μ± μμ λ Όλ¦¬μ μ€νμ μ°κΈ°ν©λλ€.νμ€ν
FlatList
μ κ±° ν λμ λλ€ :-)