react-native FlatFlist 只渲染第一屏

问题描述

react-native开发中,使用FlatList 渲染列表,大部分情况下能够正常渲染,偶尔会出现列表滑动区域变得很长,但是只渲染了第一屏的数据的,之后的数据都不在渲染了。

问题出现的环境背景及自己尝试过哪些方法

改变生成 item 的key的方法,保证每个item 的key唯一,打印发现,数据的条数是正确的,但是超出一屏之后renderitem方法不在执行了。

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

_renderItem = (item:any) => {
        console.log('the current item-->' + JSON.stringify(item));
        const itemHeight = (item.item.sectionStart === true)? 75: 55;
        return (<View key={item.item.key} style={{width: '100%', height: itemHeight}}>
                    {this.renderItemSeparator(item)}
                    {('New' === item.item.firstLetter) ?
                    <FriendItem key={item.item.UID} showRightItem={true} item={item} newFriendState={item.item.status} listItemSelected={this.onListItemClick.bind(this,item)} acceptNewFriend={this.acceptNewFriend.bind(this,item)}/>
                    : <FriendItem key={item.item.UID + item.item.key} showRightItem={false} item={item} listItemSelected={this.onListItemClick.bind(this,item)}/>}
                </View>);
    }

    renderItemSeparator(item:any){
        let isApplyFriends = ('New' === item.item.firstLetter);
        if((item.item.sectionStart === true) && (isApplyFriends === true)){

            //1、好友申请记录
            console.log('好友申请记录==========>');
            return (<View  key={"floder"} style={{width: '100%',height: 20, flexDirection: 'row',alignItems: 'center', justifyContent: 'space-between',backgroundColor: '#f7fafb'}}>
                            <Text style={{color: '#999999', fontSize: 14,paddingLeft: 15}}>{i18n.t(LangId.FRIENDS_LIST_SUBTITLE)}</Text>
                            <TouchableOpacity style={{backgroundColor: 'transparent',width: 40, paddingRight:15, height: '100%', justifyContent: 'center',alignItems: 'flex-end'}} onPress={()=>this.newFriendsSectionUnfold()}>
                                <Image style={{width: 12, height:7, transform:[{scaleY: this.state.scaleValue}] }} source={require('../../../../assets/img/friend/sanjiao.png')}/>
                            </TouchableOpacity>
                        </View>);
        }
        if(item.item.sectionStart === true){

            //2、普通分组
            console.log('好友普通分组==========>'+item.item.firstLetter);
            return (<Text key={"label"+item.item.UID} style={styles.sectionView}>{item.item.firstLetter}</Text>);
        }
    }

你期待的结果是什么?实际看到的错误信息又是什么?

无论如何滑动,列表的数据都能正常渲染出来。

阅读 2.8k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题