React-native-snap-carousel: FlatListλ₯Ό λ‹€λ₯Έ ꡬ성 μš”μ†Œλ‘œ λ°”κΎΈμ‹œκ² μŠ΅λ‹ˆκΉŒ?

에 λ§Œλ“  2018λ…„ 01μ›” 22일  Β·  28μ½”λ©˜νŠΈ  Β·  좜처: meliorence/react-native-snap-carousel

FlatList ꡬ성 μš”μ†ŒλŠ” λ„ˆλ¬΄ 버그가 λ§ŽμŠ΅λ‹ˆλ‹€.

μ΄λŸ¬ν•œ ν”ŒλŸ¬κ·ΈμΈμ€ ν₯미둜운 λŒ€μ²΄λ¬Όμ΄ 될 수 μžˆμŠ΅λ‹ˆλ‹€.

enhancement help wanted

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

@PublicParadise ν—€λ“œ 업에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€!

FlatList λ†€λžκ²Œλ„ λ©ˆμΆ”μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ ... InteractionManager κ°€ μ–΄λ”˜κ°€μ—μ„œ μ‹€ν–‰ 쀑일 수 μžˆμœΌλ―€λ‘œ ꡬ성 μš”μ†Œ λ…Όλ¦¬μ˜ 싀행을 μ—°κΈ°ν•©λ‹ˆλ‹€.

ν™•μ‹€νžˆ FlatList 제거 ν•  λ•Œμž…λ‹ˆλ‹€ :-)

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

두 가지 μ£Όμš” 단점 :

  • 첫 λ²ˆμ§ΈλŠ” 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 λ›°μ–΄ λ“€κ³  μ‹Άλ‹€λ©΄ 큰 도움이 될 κ²ƒμž…λ‹ˆλ‹€. 그렇지 μ•Šλ‹€λ©΄ μ„œλ‘œ κ²Œμ‹œν•˜λ„λ‘ν•©μ‹œλ‹€ ;-)

μ—…λ°μ΄νŠΈ : 링크λ₯Ό νŒŒν—€ μΉ˜λ©΄μ„œ wix.com Tal Kol 에 정말 쒋은 Medium λΈ”λ‘œκ·Έκ°€ μžˆλ‹€λŠ” 것을 κΉ¨λ‹¬μ•˜μŠ΅λ‹ˆλ‹€. μ§€κΈˆκΉŒμ§€ λ‚˜λŠ” 그의 λͺ¨λ“  기사λ₯Ό μ’‹μ•„ν•©λ‹ˆλ‹€. 이것은 λ˜ν•œ 우리의 ν† λ‘ κ³Ό κ΄€λ ¨μ΄μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

@ 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

μž˜ν–ˆλ‹€

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