You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React中该场景是否需要使用状态更新器函数?

问题解答

1. 状态更新后立即使用旧状态是否正确?

这段代码的用法是正确的。

React的状态更新是异步的,调用setLastCoordinates后,lastCoordinates不会立刻更新为新值,仍然保持调用前的旧状态。而这段代码的逻辑恰好需要用上一次的坐标(旧的lastCoordinates)和当前鼠标位置计算偏移量dx、dy,之后才把当前坐标设为新的lastCoordinates——这完全匹配需求场景,所以写法没问题。

2. 是否需要改用更新器函数?

你提到的setLastCoordinates(() => ({x: e.clientX, y: e.clientY}))写法,在这里其实没必要。

更新器函数的核心作用是当新状态依赖旧状态时,确保获取到最新的旧状态值。但当前代码里的新坐标只依赖当前鼠标的clientX和clientY,和旧状态无关,所以直接传对象和用更新器函数的效果完全一致,原写法反而更简洁。

如果后续逻辑调整,比如新坐标需要基于旧坐标做修改(比如叠加固定偏移),那时候才需要用更新器函数来保证状态的正确性,但就当前代码而言,两种写法都可行,原写法更合适。


内容的提问来源于stack exchange,提问作者user22262485

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 21:39:56