From 67345e0cf3f58e60b7eff40f80b1773a30337869 Mon Sep 17 00:00:00 2001 From: Thierry Charbonnel Date: Wed, 7 Nov 2018 17:01:58 -0500 Subject: [PATCH] new debounce srcoll. --- example/src/components/slides/Slide1.js | 2 +- package.json | 2 +- src/Fullpage.jsx | 20 +++++++++++--------- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/example/src/components/slides/Slide1.js b/example/src/components/slides/Slide1.js index bc77928..b922ac1 100644 --- a/example/src/components/slides/Slide1.js +++ b/example/src/components/slides/Slide1.js @@ -24,7 +24,7 @@ const Slide1 = () => ( marginTop: '0.3em', marginBottom: '0.4em', }}>Create Fullscreen Scrolling Websites -

Version 0.1.6-alpha

+

Version 0.1.7-alpha

); diff --git a/package.json b/package.json index d26a43b..a09fc6b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ap.cx/react-fullpage", - "version": "0.1.6-alpha", + "version": "0.1.7-alpha", "description": "Create Beautiful Fullscreen Scrolling Websites", "author": "thierryc", "license": "MIT", diff --git a/src/Fullpage.jsx b/src/Fullpage.jsx index 2a62319..7855bed 100644 --- a/src/Fullpage.jsx +++ b/src/Fullpage.jsx @@ -119,22 +119,21 @@ class Fullpage extends PureComponent { window.requestAnimationFrame(() => { const { resetScroll, translateY, debounceScroll } = this.state; // resetScroll or prevent scroll for debounceScroll - if (resetScroll || debounceScroll) { + if (resetScroll) { window.scrollTo(0, translateY * -1); } + const pageYOffset = window.pageYOffset || 0; + this.setState({ + pageYOffset, + resetScroll: false, + }); + if (!debounceScroll) { - const pageYOffset = window.pageYOffset || 0; const newSlide = this.slides.find((slide) => { const el = slide.el.current; return pageYOffset < el.offsetTop + (el.offsetHeight * 0.5); }); - - this.setState({ - pageYOffset, - resetScroll: false, - }); - this.goto(newSlide); } @@ -226,7 +225,10 @@ class Fullpage extends PureComponent { debounceScroll: true, }); - setTimeout(() => this.setState({ debounceScroll: false }), transitionTiming); + setTimeout(() => this.setState({ + debounceScroll: false, + resetScroll: true, + }), 700); const { onShow } = newSlide.props;