写了个控制向下滚动状态的 Hooks

2023-01-17

今天的工作任务也在继续小修小补,对修复字幕列表滚动状态的问题做了修复,并打算抽象变成一个 Hooks,方便多处容器使用。因为想到 Ref 的即时性,却忘记了 State 改变 UI 状态的准确性,流程运行正确,却发现按钮的展示并没有按照设定值实时改变。

// 滚动容器管理
const { canScroll, setForceDisableScroll, scrollToBottom } = useSubtitleScrollList({
  el: scrollWrapperRef.current,
  deps: [subtitles],
  scrollDeps: [visibleMode],
});

使用起来大概就是这样,canScroll 属性标记根据默认规则是否会自动往下进行滚动,同时代表着手动点击向下滚动的按钮是否是隐藏的。因为默认会自动滚动的情况下就是在底部,在底部的情况下按钮就是不显示的。

el 参数监听某个容器的滚动事件实现状态检测,deps 参数根据依赖变化触发状态检测,scrollDeps 参数根据依赖变化触发自动向下滚动(如果此时是禁止滚动的状态,则不会滚动)

大概思路没有问题,明早调整一下状态应该就可以正式使用了。

一般
概览页 时间轴
奇趣音乐盒 技术源于 Kico Player
Emmm,这里是歌词君