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

React useCallback调用getStats传filters参数出现[object Object]问题

问题原因

两处代码错误直接导致该问题:

  • useCallback 语法使用错误:该Hook仅接收两个入参,第一个为回调函数,第二个为依赖数组。你将filters写在了第三个参数位置,既不会被依赖收集逻辑识别,还会引发闭包陈旧值问题。
  • getStats 传参结构不符合预期:当前传入的参数为{ type: xxx, filters: 过滤器对象 }的嵌套结构,而调用方/接口期望接收的是过滤器属性与type平级的结构,因此才会出现把整个filters对象识别为单个字段值、返回[object Object]的情况。
修复代码

直接调整为以下写法即可:

const handleRefresh = React.useCallback(() => {
  getFruitList();
  getStats({
    type: tab ? "Seedless" : "Seed",
    ...filters // 用展开运算符将filters内的属性平铺,和type保持同级
  });
}, [tab, getFruitList, getStats, filters]); // 将filters移入依赖数组,删除多余的第三个参数
之前尝试的方案无效原因

JSON.stringify()、toString()都是将整个filters对象转换为字符串格式,既没有解决参数结构嵌套的核心问题,还会改变参数类型,自然无法得到预期结果。

补充提示:如果filters对象中存在名为type的属性,会覆盖前面定义的type值,这种场景下可以把type字段移到...filters后面,保证type的优先级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 09:03:34