ReactJS - 在组件高于页面折叠之前不呈现(在可见 window 区域内)

ReactJS - Do not render until component is above page fold (within visible window area)

场景

我正在处理一个 ReactJS 项目,该项目在页面上有很多重复使用的组件,太多的组件导致某些 css 动画变得缓慢。我发现如果我在折叠页面下方的组件上使用 display:none,我的性能瓶颈就会消失。

问题

是否有当前的库,或者有一个非常简单的方法来完成这个?最坏的情况我会为此编写一个库并将其放在 github.

注意事项

我的情况比较独特,但我会尽可能将其分解为相关部分:

  • 我的应用程序是 ReactJS SPA 或单页应用程序(很多 xhr,异步加载)
  • 在整个生命周期中使用相同的滚动区域(.content-group)
CMS 中的

Json 包括组件名称和相应的数据。我的“SomeFactory”(非真名)获取映射的组件名称并将组件渲染到工厂容器。

一些注意事项:

  • forceCheck 是它起作用的原因,它重新评估滚动容器中惰性项目的位置
  • overflow 很有帮助,因为我使用 overflow: hidden 作为该元素祖先的一部分。

代码

import LazyLoad, { forceCheck } from 'react-lazyload';

class LazyLoadOptimized extends React.Component {
    render() {
        return (
            <LazyLoad throttle={50} height={200} offset={400} overflow scrollContainer={'.content-group'}>
                {this.props.children}
            </LazyLoad>
        )
    }
}

export default class SomeFactory extends Component {
    componentDidUpdate() {
        forceCheck();
    }
}