reachBottom.js 1.7 KB

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