reachBottom.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. module.exports = Behavior({
  2. data: {
  3. loading: false, // 加载状态标志位
  4. list: [],
  5. grade: '',
  6. pageNo: 1,
  7. totalSize: 0,
  8. noMoreData: false, // 无更多数据置为 false
  9. },
  10. methods: {
  11. async getData(fn, args) {
  12. if (this.data.noMoreData) {
  13. return
  14. }
  15. let params = {
  16. pageNo: this.data.pageNo,
  17. pageSize: 10,
  18. ...args
  19. }
  20. // 加载状态,用于页面中控制加载动画的显示
  21. this.setData({
  22. loading: true
  23. })
  24. let {
  25. list,
  26. totalSize
  27. } = await fn(params).finally(() => {
  28. // 页面渲染完成后关闭加载动画字段
  29. wx.nextTick(() => {
  30. this.setData({
  31. loading: false
  32. })
  33. });
  34. })
  35. list = [...this.data.list, ...list]
  36. this.setData({
  37. pageNo: ++this.data.pageNo,
  38. list,
  39. totalSize,
  40. noMoreData: list.length >= totalSize
  41. })
  42. },
  43. resetData(data) {
  44. if (this.data.loading) return; // 如果接口已经在请求中,则不重置数据,防止用户持续下拉刷新
  45. this.setData({
  46. loading: false,
  47. list: [],
  48. pageNo: 1,
  49. totalSize: 0,
  50. noMoreData: false,
  51. })
  52. this.loadMore(data); // 调用页面中的接口请求方法
  53. },
  54. },
  55. })