reactjs - 我如何在反应原生反向平面列表中使用无限滚动
问题描述
我想构建聊天应用程序,因为我需要通过无限滚动加载消息,但是有一个问题。当我使用平面列表时,我无法处理更多时间,因为我必须使用倒置平面列表。我不能在 flatlist 中使用 onendReach 方法。这样做的方法是什么?
<FlatList
data={data.chatDetail.edges}
keyExtractor={(item, index)=>String(index)}
renderItem={({item})=>{
return(<TopicMain style={styles.topicMain} data={item}/>)
}}
inverted={true}
/>
解决方案
我目前使用它
// get before topreach 5.th item
const thresouldVal = data.chatDetail.edges.slice(-5)
const reachIds = thresouldVal.map(val => val._id)
const handleLoadMore = useCallback((lastViewableItem) => {
// check is top reach
const isTopReach = reachIds.includes(lastViewableItem.item._id)
if (isTopReach) {
// fetchMore
}
}, [reachIds],
)
平面列表
<FlatList
data={data.chatDetail.edges}
keyExtractor={(item, index) => String(index)}
renderItem={({ item }) => {
return (<TopicMain style={styles.topicMain} data={item} />)}}
inverted={true}
onViewableItemsChanged={({ viewableItems, changed }) =>{handleLoadMore(viewableItems.slice(-1)[0]) }}
/>
推荐阅读
- python - 如何将 pandas isin 输出数据帧转换为 json 或列表格式
- azure - 连接 Azure VM 的 Azure Ad 域
- python - 如果它在具有匹配索引的python中的2个列表中,如何更改一个值
- python - 本地托管的 Django 项目,可在本地网络中长期使用
- c# - 使用字符串插值时是否可以混合字符串资源?
- c - 在 Linux 应用程序中获取 SSL_connect 分段错误
- thymeleaf - 在数组上第 100 次使用后无法在 thymeleaf 模板中使用索引变量
- python - 计算机视觉:Opencv 计算大圆圈内的小圆圈
- d3.js - 总和字段上的 dc.js 平均值
- android - 在 Flutter 中集成 Android 和 iOS 库