当前位置: 首页 > 知识库问答 >
问题:

ScrollTrigger-呈现大量组件

翟俊名
2023-03-14

我创建了一个登陆页面,当用户滚动这个站点时,我使用scrollTrigger(gsap)来显示元素.但我看到我的网站有时崩溃,工作非常慢。此外,当用户滚动到该节和布局时,节呈现的所有时间之一将崩溃。我认识到这个问题的想法很简单。在我的包装中,我有一段代码,如下所示:

function Wrapper) {
  const [about, setAbout] = useState(false)


  useEffect(() => {

    gsap.registerPlugin(ScrollTrigger);

    gsap.to('section', {
      scrollTrigger: {
        trigger: '.about',
        once: true,
        start: 'top 20%',
        onEnter: () => {
          setAbout(true)
        }
      }
    })

  })

  return (
    <div className="App">
      <div className="row">
        <About about={about} />

      </div>
    </div>
  );
}

大概是这样的

function About(props){
    useEffect(() => {
        if (props.about === true) {
           //my adnimation code
        }

    }, [props.about])
    return(
        <section className="about" >
            {console.log('about')}
            <p>Someting</p>
        </section>
    );
}

请看我将console.log使用到return()中。此控制台在访问我的网站期间一直显示。所有的时间,如果用户滚动网站到about部分,然后滚动到顶部(在这种情况下,它记录了一打或几十打)。我做错了什么?

共有1个答案

苗森
2023-03-14

你能为它创建一个沙箱吗?我认为用useRef替换Ustate可能会有帮助。

const about = useRef(false)
about.current = true
 类似资料:
  • 问题内容: 我在这里遇到了一些问题,我无法发出find_by_sql请求来呈现ActiveRecord关系。确实,我需要一个activerecord关系来提出新请求: 没有activerecord关系,我不能使用“ pluck”。因此,我想我必须将sql请求转换为Activerecord请求。但是,一旦我在ActiveRecord上使用“计数”,我就会遇到一个巨大的问题:最后,我没有ActiveR

  • 我在一个表单上有一个TextField输入,问题是当我在它上键入时,刚刚键入的值的显示/呈现有一种延迟,我想防止这种延迟。 代码:

  • 我是新来的反应。作为一个学习练习,我正在构建一个国际象棋应用程序 我想根据父级中的状态更改子级的DOM。当前,在父级组件的状态变化时,子级组件没有变化。 PS:请忽略任何语法错误。这段代码是实际代码的精简。如果你想看完整的代码,请看这里

  • 但是当我从ComponentOne切换到ComponentTwo,然后回到ComponentOne时,它被重新构建,我失去了在ComponentOne中已经做过的一切 是否有一种方法,当创建的组件没有呈现时,它不会丢失其所有状态?

  • 问题内容: 我有一个,我想计算文档需要呈现的边界框的大小。 那可能吗? 纯文本(,)几乎是微不足道的,但是我该如何使用RTF,HTML或任何其他文档来实现呢? 问题答案: 该代码可能会给您一些想法:

  • 在我的React17.0.1 SPA翻译应用程序中,我有一个包含两个部分的页面。顶部用于输入,底部用于该输入的翻译。我在为该页面使用单个上下文/状态时遇到过问题,因为翻译是由远程API执行的,当它返回时,如果不更新输入部分并将其重置为调用翻译API时所保持的值,我就无法更新UI。 因此,我将页面分成两个上下文,一个用于输入,一个用于翻译。到目前为止还好。翻译的渲染是我第一次做的。但是,尽管翻译上下