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

报错setAnimals is not a function:检查Props仍未发现问题

排查"setAnimals is not a function"报错的几个方向

1. 修正use-local-storage-state的初始化写法

你当前的初始化代码是:

const [animals, setAnimals] = useLocalStorageState("animals", []);

但use-local-storage-state库的第二个参数要求是配置对象,而非直接传入默认值数组。正确的写法应该是:

const [animals, setAnimals] = useLocalStorageState("animals", { defaultValue: [] });

直接传数组会导致库无法正确返回函数类型的setAnimals,这是最可能的问题根源。

2. 确认所有AddAnimalForm的调用场景都传递了完整props

检查项目中所有渲染AddAnimalForm的位置:

  • 是否存在直接引入AddAnimalForm但未传入setAnimals和animals的场景?
  • 如果是在页面组件中嵌套使用AddAnimalForm,要确保页面组件先接收App.js传递的animals和setAnimals,再向下传递。示例如下:
// 示例页面组件
export default function AnimalManagePage({ animals, setAnimals }) {
  return <AddAnimalForm animals={animals} setAnimals={setAnimals} />;
}

3. 临时调试验证props类型

在AddAnimalForm的开头添加调试代码,确认接收的setAnimals类型:

export default function AddAnimalForm({setAnimals, animals}) {
  // 临时调试用,确认参数类型
  console.log(typeof setAnimals, setAnimals);
  // ... 原有代码
}

如果输出结果不是function,说明props在传递链路中出现了丢失或类型异常,顺着渲染层级往上排查即可定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 07:33:27