当ListView放在scrollview中时,ListView的onEndReached属性不起作用

时间:2018-02-14 14:03:35

标签: javascript listview react-native react-native-listview

我正在开发一个示例应用程序,我将Listview放在一个ArticleList组件中并放置在Scrollview内以滚动整个页面以及滚动Listview时的标题,我试图在列表到达时每次加载十条记录,使用onEndReached方法。但即使列表位于顶层或没有滚动,它也会自动触发onEndReached函数。

   <ScrollView>
    <View>
     <Image style={{width:windowSize.width,height:windowSize.height/8.2,
             bottom:0,position:'absolute'}}
            source={require('../images/cloud.png')}/>
    </View>
    <View>
      <ArticleList
        navigator={this.props.navigator}
        userId={this.state.userId}
        modalClose={this.modalClose.bind(this)}
        sendSpinner={this.getSpinner.bind(this)}
       />
    </View>
   </ScrollView>
  

如果Listview没有放在scrollview中,问题就没有了,但是我必须和ListView一起滚动整个页面。任何人都可以指导我如何解决这个问题。最好的解决方案是感谢。

1 个答案:

答案 0 :(得分:1)

一般来说,当卷轴处于同一方向(垂直/水平)时,将卷轴放在卷轴内并不是一个好习惯。

ListView置于ScrollView内时,您实际上允许列表无限增长,因为包装滚动视图允许内容保持增长。该列表加载第一批数据,然后&#34;看到&#34;更多空间可用 - 因此在加载整个列表数据之前会加载更多内容。它好像你根本没有使用列表 - 只是一个内容非常大的滚动视图(ListView没有回收)。

您可以删除ScrollView容器并使用列表的renderHeader道具来呈现标题;它将与您的列表一起滚动。或者,您可以切换为使用FlatList并使用ListHeaderComponent prop。