Я использую response-native-snap-carousel для рендеринга небольшого списка в ванильном примере.
import React, {PureComponent} from 'react'
import { ScrollView, Text, View, SafeAreaView,Platform, Dimensions, StyleSheet } from 'react-native';
import Carousel from 'react-native-snap-carousel';
export default class SnapDemo extends PureComponent {
constructor(props){
super(props)
this.state = {data: [{'num':1},{'num':2},{'num':3}]}
}
_renderItem (item) {
console.log(item)
return(<View key={item.item.num} style={{backgroundColor:'orange', height:100}}><Text>{item.item.num}</Text></View>)
}
render(){
return(
<SafeAreaView style={{height: 600}}>
<Carousel
data={this.state.data}
renderItem={this._renderItem}
itemWidth={Dimensions.get('window').width * 0.85}
sliderWidth={Dimensions.get('window').width}
containerCustomStyle={{flex:1}}
removeClippedSubviews={true}
keyExtractor={(item, index) => index.toString()}
slideStyle={{ flex: 1 }}/>
</SafeAreaView>
)
}
}
Карусель отрисовывается нормально, но я вижу 2 проблемы:
1: RenderItems вызывается трижды
Я пробовал разные варианты, такие как useScrollView, PureComponent, ClipSubviews, но он всегда отображается трижды.
2: я получаю предупреждения о пропавших ключах
Я пытался использовать KeyExtractor и пользовательский <View key={Math.Random()}>
, но это предупреждениесохраняется.
Есть мысли о том, как можно 1) уменьшить количество вызовов для renderItems и 2) также избавиться от этого предупреждения?