描述
我有一个使用 useCallback()
钩子来更新状态,但每次我这样做,都会导致页面延迟。我指的是实际的滞后,而不仅仅是“等待异步” setState()
“延迟。
我的理论是更新状态会重新渲染太多的组件,因为如果我减少状态的值,延迟就会消失。
从本质上说,我担心我更新状态的方式没有隔离我想要的值。
代码
我将回购协议加载到一个代码沙盒中:https://codesandbox.io/s/long-forest-y9cdj?file=/src/app.js
要点如下:
页面上的按钮有一个onclick,从 App.js
在里面 App.js
,我们生成 handleClick
调用减速机的回调函数
在里面 reducer.js
这个 "UPDATE_COUNT"
case更新状态以设置正确的值。
重现问题
乱动一下,以一种高节奏点击一些按钮,你应该会遇到一些滞后。你知道,这种滞后会导致按钮动画冻结,光标停留在“指针-手指”模型中。
问题
状态更新是否可以减少这种延迟?
1条答案
按热度按时间k10s72fa1#
我发现唯一奇怪的是你在申报你的
useStyles
钩住组件内部,以便在每个渲染周期创建新的样式。将这些移动到组件外部。例子:
app.js
monster.js
我还记下了
state
由上下文提供,尽管我不完全认为这一部分是必要的。