react 疑问,在滚动事件中 执行setState 出现一直执行的情况

使用 react 中, 滚动的时候 需要动态的 setState 数据, 这个时候发现 在滚动回调中 发现执行setState 的时候, 一直在 渲染, 停不下来 这是什么情况, 有知道的吗?

阅读 3.3k
3 个回答

setState不就是要让ui重新渲染吗。因为滚动触发频率很高,所以setState频率也会很高,这种一般需要做一下节流处理吧。当然具体看你是什么需求了?

滚动事件触发会很频繁的,用的时候,都会限制一下,一般以时间为单位,比如限制 10ms 只触发一次.可以在 state 里面记录时间,然后在触发的函数里面对比,如果大于 10ms 就执行操作,如果小于就不执行,在执行的时候顺便把 state 的时间更新为当前时间.可以看看我做的这个例子

如果熟悉 RxJS 的话,用 throttleTime 操作符来解决会很方便. 例子

正常的,滚动事件一直触发

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题