Home.js 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import React, {useEffect, useState} from "react";
  2. import {connect} from 'react-redux';
  3. import {AdFeed} from "../Components/CAdFeed";
  4. import { actionTypeAd} from "../actions";
  5. import CPromiseComponent from "../Components/PromiseComponent";
  6. export const Home = ({getData,data}) => {
  7. const [fetching,setFetching] = useState(true)
  8. useEffect(()=> setFetching(false),[data])
  9. useEffect(()=>{
  10. if(fetching){
  11. getData()
  12. }},[fetching])
  13. useEffect(() => {
  14. document.addEventListener('scroll',scrollHandler)
  15. return function() {
  16. document.removeEventListener('scroll',scrollHandler)
  17. }
  18. },[])
  19. const scrollHandler = (e) => {
  20. if(e.target.documentElement.scrollHeight - (window.innerHeight + e.target.documentElement.scrollTop) < 300){
  21. setFetching(true)
  22. console.log(e.target.documentElement.scrollHeight)
  23. }
  24. }
  25. if(data){
  26. return (
  27. <CPromiseComponent promiseName='AdFind'>
  28. <div>
  29. {data.map(ad => <AdFeed key={ad._id} _id = {ad. _id} price = {ad.price} title = {ad.title} description={ad.description} owner={ad.owner} images={ad.images} comments={ad.comments} />)}
  30. </div>
  31. </CPromiseComponent>
  32. )
  33. }
  34. }
  35. const TypeAd = connect(state => ({data: state.promiseReducer.AdFind?.payload?.data?.AdFind || []}),{getData: actionTypeAd})(Home)
  36. export default TypeAd