【问题标题】:Enabling/Disabling componentDidUpdate()启用/禁用 componentDidUpdate()
【发布时间】:2022-01-19 21:50:40
【问题描述】:

所以我尝试构建一个电梯模拟器作为我在 React 中的第一个项目来学习框架本身。目前我一直在实时调度电梯。假设我有一个每 5 秒生成一次请求的函数,并且我想在有待处理请求时调度电梯。

为了做到这一点,我使用 componentDidUpdate() 来监控所有请求池,并且每当计数 > 0 时,我通过调用 Schedule() 来安排汽车。

问题是 Schedule() 花费的时间远远超过 5 秒(包括动画等),当有一个 props 更新触发 componentDidUpdate() 时,应用程序似乎冻结了,该组件尚未完成运行。

componentDidUpdate() {
     Schedule() // takes longer than the interval at which I call componentDidUpdate()
}

我是 React 的新手,根据我以前的编程经验,我觉得我的代码/逻辑中的最佳(或更好)实践存在一些问题,但我不知道具体在哪里。非常感谢任何帮助或建议!

【问题讨论】:

  • componentDidUpdate 不用于监视任何更改,它是在 stateprops 更新或整个组件由其父组件重新渲染时调用的生命周期方法。不要自己打电话给componentDidUpdate,React 会为你做这件事。您是否尝试定期调用Schedule 来轮询请求/请求池的状态?
  • 对不起,我没有说清楚。我自己没有调用 componentDidUpdate(),我知道每当状态和道具更新时都会调用它。我不知何故需要不断地“观察”请求池,并在有请求等待时安排一辆车(就像实时电梯的工作方式一样)。我每隔一段时间将请求添加到请求池中。
  • 我之前也尝试过 useEffect() 通过制作一个函数组件,因为它优化了它被调用的状态更改,它也不起作用。
  • 我认为我们需要更多的上下文来了解您正在尝试做的事情,所以为什么它按预期工作或没有按预期工作。 stackoverflow.com/help/minimal-reproducible-example

标签: reactjs components react-component


【解决方案1】:

也许您可以在等待 Schedule() 加载的异步函数中使用 await

毕业生

乔纳斯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-10
    • 2016-09-17
    • 2013-02-06
    • 2013-10-22
    相关资源
    最近更新 更多