usePage.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. // mouse.js
  2. import { ref, onMounted, onUnmounted } from 'vue'
  3. import { onReady, onReachBottom } from '@dcloudio/uni-app'
  4. export const usePage = getPage => {
  5. // 页码,默认为1
  6. const page = ref(1)
  7. // 页大小,默认为10
  8. const limit = ref(10)
  9. // 关键字
  10. const keyword = ref('')
  11. // 类别
  12. const type = ref('')
  13. // 分类ID
  14. const sid = ref('')
  15. // 是否新品,不为空的字符串即可
  16. const news = ref('')
  17. // 是否积分兑换商品
  18. const isIntegral = ref('')
  19. // 到底了
  20. const loadend = ref(false)
  21. // 加载中
  22. const loading = ref(false)
  23. const dataList = ref([])
  24. const handleGetDataList = async () => {
  25. console.log('--> % handleGetDataList % loading:\n', loading.value)
  26. console.log('--> % handleGetDataList % loadend:\n', loadend.value)
  27. if (loading.value || loadend.value) return
  28. loading.value = true
  29. const products = await getPage({
  30. page: page.value,
  31. limit: limit.value,
  32. keyword: keyword.value,
  33. type: type.value,
  34. sid: sid.value,
  35. news: news.value,
  36. isIntegral: isIntegral.value,
  37. })
  38. console.log('--> % handleGetDataList % products:\n', products)
  39. if (products) {
  40. if (products.length <= 0) {
  41. loadend.value = true
  42. }
  43. dataList.value = dataList.value.concat(products)
  44. }
  45. loading.value = false
  46. }
  47. const handleRefresh = () => {
  48. loadend.value = false
  49. loading.value = false
  50. dataList.value = []
  51. handleGetDataList()
  52. }
  53. onReady(() => {
  54. console.log('onReady')
  55. // handleGetDataList()
  56. })
  57. onReachBottom(() => {
  58. if (loading.value) return
  59. page.value += 1
  60. })
  61. // 通过返回值暴露所管理的状态
  62. return {
  63. type,
  64. dataList,
  65. page,
  66. limit,
  67. keyword,
  68. loading,
  69. loadend,
  70. refresh: handleRefresh,
  71. }
  72. }