当前位置: 首页 > 网络应用技术

setInterval在使用效果中

时间:2023-03-08 11:49:18 网络应用技术

  立即,我进入了“您不知道JavaScript”中的“活动域和关闭”的第一部分,然后绘制与与气泡相对应的气泡图相对应的错误代码。

  (1)分析

  从上图可以看出,当安装计数器组件时,它将产生由三个范围嵌套的域链。当计时器setInterval每次执行时)找到计数值,因为安装期间计数的初始值始终为0,因此每次计时器执行计数为0,并且执行后的计数为1。

  尽管由于计时器的存在,该组件将始终重新构成,但在安装期间定义了计时器的回调功能,因此该县将始终引用其关闭。因此1。

  (2)解决方案:计划1是最佳解决方案1:使用SetCount回调表格更新计数

  该功能的身份保证是稳定的,因此您可以放心,可以省略它

  目前,回调调用仍然每秒调用,但是每个内部回调的最新值是最新值(该变量在回调中命名)。

  方案2:添加计数依赖性以使用效率

  如上所述,因为第二个依赖项依赖于使用参数计数到USEREFECT,每次执行计时器的执行更改计数值时,组件将被重新施加,并且效果将被重新执行。请参见。请参见上面的正确测试),每次我渲染之后,我都访问了新的计数器范围中的新计数值,即:1,2,3 ...

  方案3:使用UserDucer将状态更新逻辑移动到效果之外

  将整个状态管理转移到还原器(见行)将消除回调中对本地状态的任何引用。

  我们的主体更简单和易于阅读,我们不再需要担心被困在封闭中的旧状态:我们所有的更新都通过安排单个还原器进行。使用还原器有助于将阅读与写作分开。我们的身体。只关心计划行动,这将产生新的状态;在关心阅读现有状态并撰写新状态之前。

  选项4:在使用作为最后的手段的情况下,如果您想要类似于类的功能,则可以使用REF来保存变量。

  返回一个变量ref对象,其属性被初始化为传递参数()。返回的ref对象在组件的整个生命周期中继续存在。

  每次渲染后,它将增加(请参见*的行)。用于保存和增加值。第二,计时器的值将从1中获取,并且将呈现组件。

  原始:https://juejin.cn/post/710378907670381598