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