RenderItem快照轮播调用多次

时间:2019-02-10 13:26:22

标签: react-native react-native-snap-carousel

我正在使用react-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之类的其他选项,但是它总是被渲染三次。 enter image description here

2:我收到按键丢失警告

enter image description here 我尝试使用KeyExtractor和自定义<View key={Math.Random()}>,但此警告仍然存在。

关于如何1)我减少对renderItems的调用和2)也摆脱该警告的任何想法?

0 个答案:

没有答案