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

React子组件调用父传的setTodos提示不是函数,求问题原因

setTodos is not a function

问题原因
  • 参数名大小写不匹配:父组件向Form子组件传递的属性名为setTodos,但子组件解构props时写的是setToDos(字母d为大写,和传入的属性名不一致),导致子组件实际拿到的setToDos为undefined,调用时就会抛出「不是函数」的错误。
  • 参数漏传:父组件没有给Form组件传递setInputText属性,但子组件中直接解构并使用了该属性,后续调用setInputText时也会触发同类报错。
  • 额外拼写错误:生成id时调用的Math.randowm拼写有误,正确写法为Math.random,后续运行时也会触发报错。
修复方案
  1. 修改App组件中Form组件的传参逻辑,补上遗漏的setInputText:
<Form 
  inputText={inputText}
  setInputText={setInputText}
  todos={todos}
  setTodos={setTodos}
/>
  1. 修改Form子组件的props解构字段,把setToDos改为和父组件传参一致的setTodos:
const Form = ({inputText, setInputText, todos, setTodos}) => {
  // 原有业务逻辑保持不变,调用更新函数时使用setTodos即可
}
  1. 修复id生成逻辑的拼写错误:把Math.randowm()改为Math.random()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 10:54:03