提问人:jabu404 提问时间:10/25/2023 最后编辑:Adajabu404 更新时间:10/29/2023 访问量:49
如何添加 onscroll 事件侦听器并使用 scrollview 的 ref 获取 Scrollview 的当前滚动位置
How do I add an onscroll event listener and get the current scroll position of a Scrollview using the ref of the scrollview
问:
我正在使用 react-native-gifted-charts 来实现带有多条线的面积图。
目标:允许用户在图表上水平滚动,但始终显示最小的完整值范围(垂直,y 轴)。即,当视图中的值具有较低的范围时,介于最大值和最小值之间,根据需要自动放大和缩小,并且更多值进入视图框架。
机会:react-native-gifted-charts 为您提供了其内部实现中使用的底层 scrollview 的参考。
麻烦:我知道如何通过将道具作为道具直接附加到滚动视图来添加道具,即onscroll
<Scrollview onscroll={(event) => {}} />
我将能够以这种方式实现我需要实现的一切,但我不知道如何使用 Scrollview 来做到这一点ref
我被困在这里:
const scrollRef = useRef(null)
const onScroll = useCallback((event) => {
console.log("🚀 ~ file: EnergyGraph.tsx:1149 ~ onScroll ~ event:", event.target)
// my logic would go here
}, [])
useEffect(() => {
if (scrollRef?.current) {
scrollRef.current.addEventListener("scroll", onScroll)
return () => scrollRef.current.removeEventListener("scroll", onScroll)
}
}, [])
return (
<LineChart scrollRef={scrollRef} />
)...
但是使用这种方法,我收到错误:addEventListener 不是函数
答:
0赞
famfamfam
10/25/2023
#1
我认为您必须通过添加道具来编辑此库,将其称为此处
https://github.com/Abhinandan-Kushwaha/react-native-gifted-charts/blob/3ac786c691cb2da6bbb6b280ab62229d6b559179/src/LineChart/index.tsx#L2694-L2704extraScroll
喜欢这个:
onScroll: (ev: any) => {
if (
pointerConfig &&
pointerConfig.activatePointersOnLongPress &&
pointerConfig.autoAdjustPointerLabelPosition
) {
setScrollX(ev.nativeEvent.contentOffset.x);
}
props.extraScroll && props.extraScroll(ev)
},
之后,您可以使用此道具在类中处理更多内容extraScroll
评论