![]() |
1
1
你应该记住
或者,您可以在React ref中缓存所有状态值,并通过回调中的ref访问它们。 例子:
|
![]() |
2
1
正如Drew Reese指出的,这是典型的 陈旧状态 使用JavaScript闭包时,React中的问题。 使用效果 将一个函数作为参数,在该函数中使用另一个函数 增加列表项 这是在 反应组分 和使用 反应状态 .这种情况下发生的是 增加列表项 在以下情况下被记忆 使用效果 执行时,它就像一张静态的图片。不幸地 增加列表项 不是一个纯粹的函数,它依赖于React状态,所以它在React生命周期中会发生变化 使用效果 它的回调版本将保持静态。这是因为你初始化了 使用效果 将空数组用作第二个参数[]的钩子。 这就是为什么我们要引入 依赖项数组 ,数组中的值决定何时必须重新计算钩子中的回调。有一个非常重要的问题 掉毛 强制您将回调的所有依赖项放入deps数组中的规则: @反应钩/详尽的DEP 避免许多细微的错误和不当行为。 这应该是在您的案例中使用React钩子的正确方法,以提高性能,避免错误和对Reender进行不必要的计算:
|
![]() |
Jonas · 反应挂钩-编辑后更新列表中的项目 2 年前 |
![]() |
swamp blues · 如何从自定义挂钩收集和返回多个函数 2 年前 |
![]() |
FettFrank · 测量渲染React组件的时间 2 年前 |
![]() |
ManP22 · 我想在同一次单击中调用两个常量 2 年前 |
![]() |
David · 如何多次使用fetch-get响应? 2 年前 |