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

React Native中currentColor切换为null功能失效问题求助

React Native ModalProductSizeColor组件状态更新异常修复方案

问题核心是闭包陷阱:handleSetCurrentColor函数在组件初始渲染时创建,捕获了当时的currentColor初始值(null)。后续状态更新后,函数内部依然使用旧的currentColor值做判断,导致点击同色时无法正确置为null。

直接修改handleSetCurrentColor,使用函数式状态更新即可解决:

const handleSetCurrentColor = (color: ColorsOptions) => {
  // 用函数式更新,接收最新的currentColor状态值
  setCurrentColor(prevColor => prevColor === color ? null : color);
};

完整修改后的核心代码片段:

const [currentColor, setCurrentColor] = useState<ColorsOptions | null>(null);

const handleSetCurrentColor = (color: ColorsOptions) => {
  setCurrentColor(prevColor => prevColor === color ? null : color);
};

为什么这样有效?

函数式更新会把当前最新的状态值(prevColor)作为参数传入,确保每次判断都基于最新的状态,彻底避开闭包带来的旧值问题。之前的写法里,currentColor是函数创建时的快照值,不会随着状态更新自动同步,所以逻辑失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:50:53