Radix UI ScrollArea移动端scrollTop始终为0,保存滚动位置失效问题求助
Radix UI ScrollArea移动端scrollTop始终为0,保存滚动位置失效问题求助
大家好,我最近在使用Radix UI的ScrollArea组件时遇到了个头疼的问题:桌面端用着一切正常,但在移动设备上,打印出来的scrollTop始终是0。我能确定手势是被识别到的——因为加了touchstart监听后handleScroll确实触发了,但就是拿不到正确的滚动距离,感觉问题可能出在Radix的Viewport上?
我的实现代码如下:
const ScrollArea = React.forwardRef< React.ElementRef<typeof ScrollAreaPrimitive.Root>, ScrollAreaProps >(({ className, children, storageKey, resetCondition, ...props }, ref) => { const scrollRef = React.useRef<HTMLDivElement>(null) React.useEffect(() => { const handleScroll = () => { console.log("Scroll detected", scrollRef.current?.scrollTop) } const scrollElement = scrollRef.current if (scrollElement) { scrollElement.addEventListener("scroll", handleScroll) scrollElement.addEventListener("touchstart", handleScroll) } return () => { if (scrollElement) { scrollElement.removeEventListener("scroll", handleScroll) scrollElement.removeEventListener("touchstart", handleScroll) } } }, []) return ( <ScrollAreaPrimitive.Root ref={ref} className={cn("relative overflow-hidden", className)} {...props} > <ScrollAreaPrimitive.Viewport ref={scrollRef} className="h-full w-full rounded-[inherit]" > {children} </ScrollAreaPrimitive.Viewport> <ScrollBar /> <ScrollAreaPrimitive.Corner /> </ScrollAreaPrimitive.Root> ) })
我之前尝试过保存滚动位置,但在移动端完全没效果,有没有大佬能帮忙分析下这是Radix组件本身的问题,还是我的实现哪里写错了?
备注:内容来源于stack exchange,提问作者Amir Hegazy
相关产品推荐
相关产品推荐

