react-native-pullRefreshScrollView icon indicating copy to clipboard operation
react-native-pullRefreshScrollView copied to clipboard

加载更多数据时,如何不重新渲染从头开始展示数据,而是在最后一条数据后面添加更多新加载数据

Open huangxiaohao opened this issue 8 years ago • 3 comments

作者您好! 我目前使用您的组件遇到了一个问题,想向您请教一下。 我在加载更多数据时,它都会重现渲染加载数据,并且从头开始进行显示,但是这显然不符合用户操作习惯,我想的是加载完新的数据之后,直接append在老数据之后,而不是从第一条数据进行显示。 谢谢您。

huangxiaohao avatar Mar 27 '17 07:03 huangxiaohao

这个需要你自己控制数组,每次append时将原本的数组保留新增的元素concat进去新数组

lvming6816077 avatar Mar 29 '17 07:03 lvming6816077

@lvming6816077 感谢回复。 我每次加载数据之后会去把新加载出来的数据和老的数据进行concat。这一步是没有问题的。 然后将新生成的数据进行如下操作: this.setState({ contentList:this.state.contentList.concat(responseData.resData.list) }); this.setState({ dataSource: this.state.dataSource.cloneWithRows(this.state.contentList) });

当我把获取到的完整数据放入dataSource之后,它都会去重新渲染一次页面,导致页面会从第一条数据进行显示,但是数据其实已经加载出来的了,只是会跳到最顶端开始显示。不知道我这样描述是否清楚。

于是我没有改变我其他的代码,只是将您的组件移除,使用RN官方的上拉加载,数据会正常的拼接到老数据之后,而不会重新渲染页面。 我咨询了RN中文网的晴明老师, 他的猜测可能是您的组件破坏了listview的渲染,所以导致了数据无法正常的去添加。(当然这仅仅是猜测,不知道您是否有遇到过类似的问题)

image

huangxiaohao avatar Mar 29 '17 08:03 huangxiaohao

调用PullRefresh.onRefreshEnd()函数会将ScrollView滚动到顶部,有可能你是加载更多和下拉刷新获取数据后都会调用这个函数

linkdrone avatar Apr 04 '17 15:04 linkdrone