我已经从 Flatlist 切换到 RecyclerListView,它的性能非常好。但是,我对这个组件也有 2 个问题:
- 键盘覆盖输入
下面的代码是 RecyclerListView 的声明方式
<RecyclerListView
style={{ flex: 1, paddingTop: 10 }}
rowRenderer={rowRenderer}
dataProvider={dataProvider}
layoutProvider={layoutProvider}
onEndReached={parent.onEndReached}
onEndReachedThreshold={2800}
showsVerticalScrollIndicator={false}
renderFooter={renderFooter}
externalScrollView={ExtendedScrollView}
refreshControl={
<RefreshControl
refreshing={parent.state.refreshing}
onRefresh={parent.onRefresh}
tintColor={loadingColor}
/>
}
/>
我尝试通过添加带有 KeyboardAwareScrollView 类扩展的 externalScrollView 道具来解决此问题
export default class ExtendedScrollView extends KeyboardAwareScrollView {
scrollTo(...args) {
if (this._scrollViewRef) {
this._scrollViewRef.scrollTo(...args);
}
}
render() {
return (
<KeyboardAwareScrollView {...this.props}
innerRef={scrollView => { this._scrollViewRef = scrollView; }}
extraScrollHeight={110}
/>
)
}
但这会导致列表向下滚动 2 次。它与 Flatlist 不同。
- 在渲染列表项之前显示页脚
以下是这些问题的样子:https ://media.giphy.com/media/XljQNVHSqs9sxjK0Jm/giphy.gif