index.jsx 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. import { useState, useEffect } from 'react'
  2. import { ScrollView } from '@tarojs/components'
  3. import { useSelector } from 'react-redux'
  4. import { fetch } from '@/utils/request'
  5. import { API_ITEMS_LIST } from '@/constants/api'
  6. import './index.scss'
  7. import MyShareListItem from '../MyShareListItem/index'
  8. export default function MyCollectForBuilding () {
  9. const user = useSelector(state => state.user)
  10. const [PersonId, setPersonId] = useState(null)
  11. const [pageNumber, setPageNumber] = useState(null)
  12. const [pageSize] = useState(10)
  13. const [HasNextPage, setHasNextPage] = useState(true)
  14. const [PageList, setPageList] = useState([])
  15. const [IsPull, setPull] = useState(false)
  16. const [PullTimer, setPullTimer] = useState(null)
  17. useEffect(() => {
  18. if(user?.userInfo?.person?.personId) {
  19. setPersonId(user.userInfo.person.personId)
  20. }
  21. }, [user])
  22. useEffect(() => {
  23. if(PersonId) {
  24. setPageNumber(1)
  25. }
  26. }, [PersonId])
  27. useEffect(() => {
  28. if(pageNumber && HasNextPage) {
  29. fetch({ url: API_ITEMS_LIST, method: 'get', payload: { mine: true, pageNumber, pageSize } }).then((res) => {
  30. setPageList(res.records || [])
  31. setHasNextPage(res.current < res.pages)
  32. })
  33. }
  34. }, [pageNumber])
  35. const PageRefresh = () => { // 页面下拉刷新回调
  36. setPull(true)
  37. }
  38. useEffect(() => { // 下拉刷新触发
  39. if (IsPull) {
  40. clearTimeout(PullTimer)
  41. setPullTimer(setTimeout(() => {
  42. setPull(false)
  43. }, 2000))
  44. }
  45. }, [IsPull])
  46. return (
  47. <view className='components MyCollectForBuilding'>
  48. <ScrollView scroll-y refresher-enabled refresher-triggered={IsPull} onrefresherrefresh={PageRefresh} refresher-background='#fff'>
  49. <view className='PageContent'>
  50. <view className='List'>
  51. {
  52. PageList.map((item, index) => (
  53. <MyShareListItem Data={item} key={`MyShareListItem-${index}`}></MyShareListItem>
  54. ))
  55. }
  56. </view>
  57. {/* bottom */}
  58. <view className='PageBottom'>
  59. <text>已经到底了~</text>
  60. </view>
  61. </view>
  62. </ScrollView>
  63. </view>
  64. )
  65. }