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

React中点击按钮重置动态对象statusFilters为空时出现TypeError的解决方法

修复statusFilters重置时的TypeError问题

看起来你遇到的问题根源有两个关键点,咱们一步步理清楚:

1. 错误的重置值类型

从你的filterHandler代码能看出来,statusFilters是一个对象(你用了对象展开语法{ ...statusFilters, [e.target.name]: e.target.checked }来更新它),但你在resetAllFilters里却把它重置成了数组[]。这种类型不匹配会导致后续代码处理statusFilters时出错,更关键的是——如果父组件里的setStatusFilters期望接收对象类型的参数,传数组可能会引发连锁问题。

2. 确认setter函数的正确调用

错误提示TypeError: statusFilters is not a function说明你某个地方把状态对象statusFilters当成函数来调用了。检查你的resetAllFilters函数,确保你调用的是setStatusFilters(父组件传入的状态更新函数),而不是statusFilters(状态本身)。

正确的修复代码

把resetAllFilters改成这样:

const resetAllFilters = () => {
  // 如果你想清空所有筛选,设置为空对象
  setStatusFilters({});
  // 或者如果你想重置为默认筛选状态,用你之前定义的defaultFilterState
  // setStatusFilters(defaultFilterState);
};

另外,你的reset函数里有个小错误:setReset(!setStatusFilters)是把状态更新函数setStatusFilters当成布尔值取反,这显然不对,应该改成切换res的状态:

const reset = () => setReset(prev => !prev);

这样修改后,点击Reset按钮就能正确把statusFilters重置为空对象(或者默认状态),不会再出现类型错误了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 01:17:38