本文介绍了更新 Flatlist 数据后的 ScrollToEnd的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在用 Flatlist 制作一个聊天框.我想向数据添加一个新项目,然后滚动到列表底部.我使用 scrollToEnd 方法但它不起作用.我该怎么做?

I'm making a chat box with Flatlist. I want to add a new item to data then scroll to bottom of list. I use scrollToEnd method but it did not work. How can I do this?

<FlatList
        ref="flatList"
        data={this.state.data}
        extraData = {this.state}
        renderItem={({item}) => <Text style={styles.chatFlatListItem}>{item.chat}</Text>}
/>

AddChat(_chat){
    var arr = this.state.data;
    arr.push({key: arr.length, chat: _chat});
    var _data = {};
    _data["data"] = arr;
    this.setState(_data);
    this.refs.flatList.scrollToEnd();
 }

推荐答案

我找到了一个更好的解决方案,scrollToEnd() 不起作用,因为它在对 进行更改之前被触发FlatList.
由于它继承自 ScrollView,这里最好的方法是在 onContentSizeChange 中调用 scrollToEnd(),如下所示:

I found a better solution,scrollToEnd() is not working because it is triggered before the change is made to the FlatList.
Since it inherits from ScrollView the best way here is to call scrollToEnd() in onContentSizeChange like so :

<FlatList
            ref = "flatList"
            onContentSizeChange={()=> this.refs.flatList.scrollToEnd()} />

这篇关于更新 Flatlist 数据后的 ScrollToEnd的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-09 05:04