diff --git a/src/newsreader/js/pages/homepage/components/postlist/PostItem.js b/src/newsreader/js/pages/homepage/components/postlist/PostItem.js index 83833f5..a03fcf1 100644 --- a/src/newsreader/js/pages/homepage/components/postlist/PostItem.js +++ b/src/newsreader/js/pages/homepage/components/postlist/PostItem.js @@ -35,7 +35,7 @@ class PostItem extends React.Component { } return ( -
  • +
  • post.read === false); + + if (lastPost && (!this.lastPost || lastPost.id != this.lastPost.id)) { + const observeTarget = document.querySelector( + `.posts__item[data-id="${lastPost.id}"]` + ); + + this.lastPost = lastPost; + this.observer.observe(observeTarget); + } } componentWillUnmount() { - window.removeEventListener('scroll', this.checkScrollHeight); + this.observer.disconnect(); } - checkScrollHeight(e) { - const postList = document.body.querySelector('.posts__list'); + handleIntersect(entries) { + entries.every(entry => { + if (entry.isIntersecting) { + this.observer.unobserve(entry.target); - if (this.props.next && !this.props.lastReached) { - if (window.scrollY + window.innerHeight >= postList.offsetHeight) { - this.paginate(); + if (this.props.next && !this.props.lastReached) { + this.paginate(); + } + + return false; } - } + }); } paginate() {