我已经使用 Redux 实现了一个RecyclerListView(Flipkart Github),如下所示。一切似乎都工作得很好,除了当onEndReached被调用并且一批新数据通过时,列表被定位到页面顶部而不是保持平滑。请参阅下面的 GIF 中的行为:
注意:这发生在网络(chrome)上。我尝试了最新的稳定版和2.0.13-alpha.1

import React, { useCallback } from 'react';
import { View, Text, Dimensions } from 'react-native';
import { useSelector, useDispatch } from 'react-redux';
import { RecyclerListView, DataProvider, LayoutProvider } from 'recyclerlistview/web';
import { createSelector } from 'reselect';
import { loadData } from '../actions';
const selectData = createSelector(
state => state.data,
data => Object.values(data),
);
let containerCount = 0;
class CellContainer extends React.Component {
constructor(args) {
super(args);
this._containerId = …Run Code Online (Sandbox Code Playgroud) 我已经从 Flipkart 的 Flatlist 切换到 RecyclerlistView。但是像 onload 和 onscroll 这样的事件存在一些行渲染闪烁问题,这看起来很奇怪。有人对此有任何解决办法吗?
这是代码:
<RecyclerListView
optimizeForInsertDeleteAnimations={true}
// initialOffset={800}
initialRenderIndex={0}
scrollsToTop={false}
showsVerticalScrollIndicator={false}
style={{ paddingBottom: 90 }}
forceNonDeterministicRendering={true}
layoutProvider={this._layoutProvider}
dataProvider={this.state.dataProvider}
extendedState={this.state.dataProvider}
rowRenderer={this._rowRenderer}
disableRecycling={true}
// shouldComponentUpdate={true}
// shouldComponentUpdate={this.shouldComponentUpdateList()}
onEndReached={this.onEndReached}
onEndReachedThreshold={0.1}
renderFooter={this._renderFooter}
scrollViewProps={{
// contentContainerStyle: { paddingBottom: (140) },
// stickyHeaderIndices: [1],
refreshControl:
<RefreshControl
refreshing={this.state.refreshing}
onRefresh={() => {
this._handleRefresh()
}}
/>
}}
/>
Run Code Online (Sandbox Code Playgroud) reactjs react-native react-native-flatlist recyclerlistview react-flatlist
FlashList和RecyclerListView都是使用Recycle的方式来渲染List,但是有什么区别呢?什么情况下应该选择FlashList还是RecyclerListView?优缺点都有什么?