【问题标题】:react-slick causing the whole page to hangreact-slick 导致整个页面挂起
【发布时间】:2020-06-12 05:11:06
【问题描述】:

我为react-slick设置了以下配置:

infinite: true,
speed: 500,
slidesToShow: 6,
slidesToScroll: 5,
swipeToSlide: true,
autoplay: true,
arrows: false
dots: false

每次滑动项目时,整个页面都会挂起。例如,除了这个光滑之外,我还有一张下表。当我尝试在光滑滑动时滚动表格时,它会挂起,它会等待光滑完成滑动,然后才能滚动表格。打开模态窗口时也是如此。如果当我打开模态窗口时 slick 正在滑动,它会挂起,直到 slick 在显示我的模态窗口之前完成滑动。 如何解决这个挂起的问题?

似乎即使只是使用 slick 本身也会导致页面在幻灯片滑动时挂起。

【问题讨论】:

  • 嗨。你能在codesandbox.io上做一个演示吗?
  • 您可以通过在页面中添加 slick 来复制。该页面可以包含溢出的其他组件,因此您会看到滚动条。尝试向下和向上滚动,您会觉得每当这个 slick 滑动时它就会停止。

标签: reactjs slick.js react-slick


【解决方案1】:

我知道这并不理想,但 react-slick 似乎已经有几个月没有维护了(而且它还存在性能问题:https://github.com/akiran/react-slick/issues/1274,维护者尚未解决)。

我会尝试用另一个轮播组件替换它,看看性能是否有所提高。我选择了这个,因为我以前用过它,它似乎比 react-slick 维护得更好:https://github.com/express-labs/pure-react-carousel

这是我之前用过的另一个库 - https://github.com/leandrowd/react-responsive-carousel,但几个月没有更新,所以我暂时不推荐它。

【讨论】:

  • 实际上即使只是直接使用“slick”而没有所有这些反应版本,您也可以看到页面在自动滑动时挂起。当底层的“光滑”模块本身已经导致挂起时,这些其他反应版本有何不同。
  • 我认为挂起的原因是当我实现更新状态变量的“onBeforeChange”时。然后一个组件依赖于这个状态来确定当前幻灯片是什么。当我评论onBeforeChange的实现时,不再挂了。但是为什么当状态更新时 react 会挂起所有的东西呢?
  • 显示您的代码,可能有多种原因,但很可能您触发了不需要的重新渲染。
  • @tudor.gergely pure-react-carousel 没有处理下一个后退操作的功能。我们只需要使用 buttonback、buttonnext 组件
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-15
  • 1970-01-01
  • 2013-12-14
  • 2013-03-24
相关资源
最近更新 更多