为何仅使用useState返回值却忽略其更新函数?
为什么有人会只用useState返回的状态值,而非普通变量?
先看你遇到的代码:
const [activeChoice] = useState("flights");
你疑惑为什么不直接用普通变量:
const activeChoice = "flights";
这种看似冗余的写法,在实际开发里有几个常见原因:
为未来需求留扩展余地:现在确实不需要更新这个值,但后续需求可能会加切换逻辑(比如让用户在航班、酒店选项间切换)。提前用
useState的话,到时候只需要补上更新函数setActiveChoice就行,不用把整个变量定义从普通变量改成状态,减少重构工作量。统一代码风格:如果组件里其他相关状态都是用
useState管理,为了保持代码风格一致,哪怕这个值暂时固定,也会用同样的方式定义。有些团队也会要求组件内的“状态类”变量统一用钩子,避免普通变量和状态变量混写,降低维护难度。复制粘贴的遗留产物:很多时候是从其他带更新逻辑的代码片段复制过来的——比如原本这段代码有修改
activeChoice的逻辑,后来需求简化,删掉了更新函数,但没把useState改成普通变量,就留下了这种写法。特殊的重渲染需求:虽然少见,但如果这个变量需要配合其他状态触发组件重渲染,
useState的状态值会在组件更新时保持引用稳定(不过静态初始值的话,普通变量也能做到),但有些场景下开发者会刻意用状态来确保重渲染逻辑的一致性。
其实从性能上看,静态初始值的useState和普通变量差别不大,只是写法上显得冗余,但背后往往有实际的开发考量。
内容的提问来源于stack exchange,提问作者Amos Machora
相关产品推荐
相关产品推荐

