我ListView
在单个ScrollView
组件中有3个组件,如下所示:
<ScrollView>
<Header />
<ListView onEndReached={() => alert('load more 1')}/>
<ListView onEndReached={() => alert('load more 2')}/>
<ListView onEndReached={() => alert('load more 3')}/>
<Footer />
</ScrollView>
该Header
组件具有一些共同的内容,并且还具有3个标签,这些标签会触发分别显示ListView
问题是任何ListView
与onEndReached={() => alert('load more 1')}
从未运行警报,所以我向下滚动,撞上列表视图结束时,我不能加载更多。拆下包装纸ScrollView
,然后运行警报,但是Header
由于我们只是拆下了包装纸,因此普通滚动条不会滚动ScrollView
。标头需要使用listview进行滚动,这就是为什么我将需要滚动的所有内容都包装在中的原因ScrollView
。
重要提示:我真的不能用ListView
同renderHeader={this.header}
,对于这种情况。因为,即使Header
将滚动,它会重新描绘的共同Header
和3个标签为每ListView
一个每一次ListView
的,而不是一次呈现。因此Header
,每次重新渲染都ListView
不会减少应用程序的渲染。
寻找此问题的解决方案,其中Header
使用listviews滚动并onEndReached
为visible触发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
根据所选的标头填充不同的数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句