【发布时间】:2016-12-09 02:58:29
【问题描述】:
当我将数据源设置为我的列表视图时,刷新控件(下拉刷新)工作得非常好。如果数据源为空,我无法下拉刷新列表视图。
我的列表视图如下所示:
<View contentContainerStyle={{flex: 1}}>
<ListView
style={styles.container}
dataSource={this.state.dataSource}
renderRow={(data) => <NotificationRow {...data}/>}
enableEmptySections={true}
refreshControl={
<RefreshControl
refreshing={this.state.refreshing}
onRefresh={this._onRefresh.bind(this)}
tintColor="#ff0000"
title="Loading..."
titleColor="#ffffff"
colors={['#ffffff']}
progressBackgroundColor="#1976D2"
/>
}
/>
</View>
我是否需要将任何道具设置为 Listview 或任何其他方式来启用下拉刷新列表视图,即使数据源为空/null?
我正在寻找此功能,因为我第一次从异步存储加载数据。在下拉刷新时,我会清除存储空间并获取新数据。
【问题讨论】:
-
你是如何清除数据源的?只需将其设置为
null? -
我是这样清除的:this.setState({ dataSource: this.state.dataSource.cloneWithRows([]), });
-
尝试将您的数据源移出课堂。像 const ds = new ListView.DataSource({rowHasChanged: (r1,r2) => r1!=r2});这可能会有所帮助。
-
按照建议将数据源移出课堂。没运气。我认为它与传递给不会使 Listview 呈现的数据源的空数据有关。因为 refreshControl 仅在我从列表视图呈现的某些内容中下拉时才处于活动状态。无法弄清楚如何解决这个问题。似乎是一个基本用例,如果列表视图不显示任何数据,用户可能会下拉刷新。
-
@EnieJakiro,感谢您的意见。回答了这个问题。
标签: react-native pull-to-refresh react-native-listview