反应 – 原生 – 在ScrollView中ListViews的分页?

我在一个ScrollView组件中有3个ListView组件,如下所示:
<ScrollView>
  <Header />
  <ListView onEndReached={() => alert('load more 1')}/>
  <ListView onEndReached={() => alert('load more 2')}/>
  <ListView onEndReached={() => alert('load more 3')}/>
  <Footer />
</ScrollView>

标题组件具有一些常见内容,并且还有3个选项卡,它们触发显示相应的ListView

问题是任何ListView与onEndReached = {()=> alert(‘load more 1’)}永远不会运行警报,所以我不能加载更多,因为我向下滚动并点击列表视图的结尾.删除包装ScrollView和警报运行,但公共头文件不滚动,因为我们刚刚删除包装ScrollView.标题需要使用列表视图滚动,这就是为什么我将所有需要滚动到ScrollView中的内容.

重要的提示:
我不能真正使用ListView与renderHeader = {this.header},对于这种情况.因为即使Header会滚动,每次ListView呈现时,它将重新渲染公共头和每个ListView的3个选项卡,而不是一次.所以每次对ListView而言,每次新的Header rerender都不会将其剪切掉.

寻找一个解决这个问题的方法,标题滚动列表浏览和onEndReached触发可见的ListView.

我想你将不得不通过更改每个listView中的dataSource来解决这个问题,以响应选择的头元素而不是加载三个不同的ListViews.
getInitialState() {
    return {
        currentList: this.ds.cloneWithRowsAndSections(INITIAL_DATA);
    }
},render() {
    return <ListView renderHeader={this._renderHeader} dataSource={this.state.currentList}/>
}

你不想这样做的唯一原因是如果你想保持三个子ListViews中的滚动位置,但这并不有用,因为你总是要滚动到顶部来改变你正在看的ListView无论如何

然后在_renderHeader函数中,您将渲染一个使用不同数据填充currentList的选择器,具体取决于所选标题.

相关文章

react 中的高阶组件主要是对于 hooks 之前的类组件来说的,如...
我们上一节了解了组件的更新机制,但是只是停留在表层上,例...
我们上一节了解了 react 的虚拟 dom 的格式,如何把虚拟 dom...
react 本身提供了克隆组件的方法,但是平时开发中可能很少使...
mobx 是一个简单可扩展的状态管理库,中文官网链接。小编在接...
我们在平常的开发中不可避免的会有很多列表渲染逻辑,在 pc ...