react hooks 监听better scroll 渲染延迟

来源:3-6 歌手列表固定标题实现(下)

诺巴蒂

2022-05-31

过程:
1、betterScroll onScroll 的时候监听 y 轴变化,赋值给变量 scrollY
2.用 useEffect 监听 scrollY 的变化,计算新的 fixedStyle 值
3.页面用新的 fixedStyle 值渲染

但是这样,渲染时候会有一些延迟,导致迅速滑动的时候有点不符合预期(位置会有1像素左右偏差,仔细能看出来)

原因我觉得是:

  1. onScroll 变化的时候,通过 setScrollY 赋值,造成了一次渲染,但是此时还是旧的fixedStyle 值
  2. useEffect 发现 setScrollY 变化,计算新的 fixedStyle ,并通过 setFixedStyle 造成第二次渲染,将新的值渲染到页面

这样至少造成一次渲染浪费,本来正常渲染就有会延迟(监听 onScroll变化的时候已经滚动完成了,再计算setFixedStyle 渲染到页面,就会有一些延迟),再多浪费一次渲染,延迟就更明显了,所以效果会有一点不符合预期,这个有什么办法吗?

是不是直接 ref dom 操作更好一些

写回答

1回答

ustbhuangyi

2022-06-03

   对 react 不太了解,不过一般来说不应该多次渲染,react 也不会性能也会有多差。可以参考 react 的 better-scroll demo: https://github.com/ustbhuangyi/better-scroll/tree/dev/packages/react-examples

0
1
诺巴蒂
其实还好,就是滚动速度特别快的时候会能看出来,因为晚了一次渲染,一帧
2022-06-03
共1条回复

Vue3开发企业级音乐Web App 明星讲师带你学大厂代码

慕课网明星讲师黄轶深度讲解 Vue3.0 ,提升的不止是Vue代码能力

2223 学习 · 1002 问题

查看课程