当ListView嵌套在ScrollView

时间:2016-02-15 09:04:55

标签: react-native

 render() {
    return (
      <ScrollView style={styles.scroll_style}>
        {this._renderStoreInfo()}
        {this._renderOperatesView()}
        <View style={styles.space}/>
        <ListView
          contentContainerStyle={styles.list}
          dataSource={this.state.dataSource}
          renderRow={(rowData, sectionID, rowID) => this._renderRow(rowData, rowID)}
          renderFooter={this._renderFooter.bind(this)}
          onEndReached={this._onEndReached.bind(this)}
          onEndReachedThreshold={10} />
      </ScrollView>
    );
  }

onEndReached一旦安装就一次又一次地被激活。但我不滚动(拉起)列表视图。

2 个答案:

答案 0 :(得分:3)

ListView内部ScrollView目前存在问题,因为两者都必须共享滚动条。

可以将您在ListView上方显示的内容移动到ListView标题(renderHeader方法),然后删除ScrollView - 这可以避免嵌套滚动组件:

getPageHeader() {
  return (
    <View>
      {this._renderStoreInfo()}
      {this._renderOperatesView()}
      <View style={styles.space}/>
    </View>   
  )
}

render() {
  return (
      <ListView
        contentContainerStyle={styles.list}
        dataSource={this.state.dataSource}
        renderHeader={() => this.getPageHeader()}
        renderRow={(rowData, sectionID, rowID) => this._renderRow(rowData, rowID)}
        renderFooter={this._renderFooter.bind(this)}
        onEndReached={this._onEndReached.bind(this)}
        onEndReachedThreshold={10} />
  );
}

这个问题有可能在不久的将来得到解决。

答案 1 :(得分:0)

我个人的经历。
只需将<ScrollView>替换为<View>,然后onEndReached函数就可以正常运行 当您的dataSource数据通过当前屏幕时,ListView将自动滚动条。
你不需要在案例中使用scrollView。