mirror of
https://github.com/cheeaun/phanpy.git
synced 2025-03-13 09:28:50 +01:00
Fix useScroll bug
This commit is contained in:
parent
d21f6158fe
commit
a86daaac0b
4 changed files with 8 additions and 13 deletions
|
@ -168,7 +168,7 @@ function Timeline({
|
||||||
reachStart,
|
reachStart,
|
||||||
reachEnd,
|
reachEnd,
|
||||||
} = useScroll({
|
} = useScroll({
|
||||||
scrollableElement: scrollableRef.current,
|
scrollableRef,
|
||||||
distanceFromEnd: 2,
|
distanceFromEnd: 2,
|
||||||
scrollThresholdStart: 44,
|
scrollThresholdStart: 44,
|
||||||
});
|
});
|
||||||
|
@ -477,7 +477,7 @@ function groupBoosts(values) {
|
||||||
function StatusCarousel({ title, class: className, children }) {
|
function StatusCarousel({ title, class: className, children }) {
|
||||||
const carouselRef = useRef();
|
const carouselRef = useRef();
|
||||||
const { reachStart, reachEnd, init } = useScroll({
|
const { reachStart, reachEnd, init } = useScroll({
|
||||||
scrollableElement: carouselRef.current,
|
scrollableRef: carouselRef,
|
||||||
direction: 'horizontal',
|
direction: 'horizontal',
|
||||||
});
|
});
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
|
@ -58,7 +58,7 @@ function Notifications() {
|
||||||
const scrollableRef = useRef();
|
const scrollableRef = useRef();
|
||||||
const { nearReachEnd, scrollDirection, reachStart, nearReachStart } =
|
const { nearReachEnd, scrollDirection, reachStart, nearReachStart } =
|
||||||
useScroll({
|
useScroll({
|
||||||
scrollableElement: scrollableRef.current,
|
scrollableRef,
|
||||||
});
|
});
|
||||||
const hiddenUI = scrollDirection === 'end' && !nearReachStart;
|
const hiddenUI = scrollDirection === 'end' && !nearReachStart;
|
||||||
|
|
||||||
|
|
|
@ -456,7 +456,7 @@ function StatusPage() {
|
||||||
});
|
});
|
||||||
|
|
||||||
const { nearReachStart } = useScroll({
|
const { nearReachStart } = useScroll({
|
||||||
scrollableElement: scrollableRef.current,
|
scrollableRef,
|
||||||
distanceFromStartPx: 16,
|
distanceFromStartPx: 16,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import { useEffect, useState } from 'preact/hooks';
|
import { useEffect, useState } from 'preact/hooks';
|
||||||
|
|
||||||
export default function useScroll({
|
export default function useScroll({
|
||||||
scrollableElement,
|
scrollableRef,
|
||||||
distanceFromStart = 1, // ratio of clientHeight/clientWidth
|
distanceFromStart = 1, // ratio of clientHeight/clientWidth
|
||||||
distanceFromEnd = 1, // ratio of clientHeight/clientWidth
|
distanceFromEnd = 1, // ratio of clientHeight/clientWidth
|
||||||
scrollThresholdStart = 10,
|
scrollThresholdStart = 10,
|
||||||
|
@ -17,12 +17,8 @@ export default function useScroll({
|
||||||
const [nearReachEnd, setNearReachEnd] = useState(false);
|
const [nearReachEnd, setNearReachEnd] = useState(false);
|
||||||
const isVertical = direction === 'vertical';
|
const isVertical = direction === 'vertical';
|
||||||
|
|
||||||
if (!scrollableElement) {
|
|
||||||
// Better be explicit instead of auto-assign to window
|
|
||||||
return {};
|
|
||||||
}
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
const scrollableElement = scrollableRef.current;
|
||||||
let previousScrollStart = isVertical
|
let previousScrollStart = isVertical
|
||||||
? scrollableElement.scrollTop
|
? scrollableElement.scrollTop
|
||||||
: scrollableElement.scrollLeft;
|
: scrollableElement.scrollLeft;
|
||||||
|
@ -77,7 +73,6 @@ export default function useScroll({
|
||||||
|
|
||||||
return () => scrollableElement.removeEventListener('scroll', onScroll);
|
return () => scrollableElement.removeEventListener('scroll', onScroll);
|
||||||
}, [
|
}, [
|
||||||
scrollableElement,
|
|
||||||
distanceFromStart,
|
distanceFromStart,
|
||||||
distanceFromEnd,
|
distanceFromEnd,
|
||||||
scrollThresholdStart,
|
scrollThresholdStart,
|
||||||
|
@ -91,8 +86,8 @@ export default function useScroll({
|
||||||
nearReachStart,
|
nearReachStart,
|
||||||
nearReachEnd,
|
nearReachEnd,
|
||||||
init: () => {
|
init: () => {
|
||||||
if (scrollableElement) {
|
if (scrollableRef.current) {
|
||||||
scrollableElement.dispatchEvent(new Event('scroll'));
|
scrollableRef.current.dispatchEvent(new Event('scroll'));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue