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

为何仅使用useState返回值却忽略其更新函数?

为什么有人会只用useState返回的状态值,而非普通变量?

先看你遇到的代码:

const [activeChoice] = useState("flights");

你疑惑为什么不直接用普通变量:

const activeChoice = "flights";

这种看似冗余的写法,在实际开发里有几个常见原因:

  • 为未来需求留扩展余地:现在确实不需要更新这个值,但后续需求可能会加切换逻辑(比如让用户在航班、酒店选项间切换)。提前用useState的话,到时候只需要补上更新函数setActiveChoice就行,不用把整个变量定义从普通变量改成状态,减少重构工作量。

  • 统一代码风格:如果组件里其他相关状态都是用useState管理,为了保持代码风格一致,哪怕这个值暂时固定,也会用同样的方式定义。有些团队也会要求组件内的“状态类”变量统一用钩子,避免普通变量和状态变量混写,降低维护难度。

  • 复制粘贴的遗留产物:很多时候是从其他带更新逻辑的代码片段复制过来的——比如原本这段代码有修改activeChoice的逻辑,后来需求简化,删掉了更新函数,但没把useState改成普通变量,就留下了这种写法。

  • 特殊的重渲染需求:虽然少见,但如果这个变量需要配合其他状态触发组件重渲染,useState的状态值会在组件更新时保持引用稳定(不过静态初始值的话,普通变量也能做到),但有些场景下开发者会刻意用状态来确保重渲染逻辑的一致性。

其实从性能上看,静态初始值的useState和普通变量差别不大,只是写法上显得冗余,但背后往往有实际的开发考量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:25:27