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

React TypeError: booksRefresh不是函数问题求助及代码排查

解决TypeError: booksRefresh is not a function的问题

嘿,这个问题很常见,我马上帮你理清原因!

错误根源

你在子组件AddBookForm里犯了一个典型的React props接收错误:

React组件的第一个参数永远是一个包含所有传入属性的props对象,而不是单个属性。

你现在写的是:

const AddBookForm = (booksRefresh) => { ... }

这里的booksRefresh其实是整个props对象,而不是父组件传递过来的同名函数。当你尝试调用booksRefresh()时,本质是在调用一个普通对象,自然会抛出“不是函数”的错误。

修复方案

有两种简单的修复方式,选一种你习惯的就行:

方式1:解构props(推荐)

直接在参数里解构出需要的booksRefresh函数:

const AddBookForm = ({ booksRefresh }) => {
  // 你的原有代码保持不变,postRequestHandler里的booksRefresh()调用正常工作
  const postRequestHandler = () => {
    addBook(title, description);
    booksRefresh();
  }
  // ...其余代码
}

方式2:通过props对象访问

保留完整的props参数,调用函数时加上props.前缀:

const AddBookForm = (props) => {
  const postRequestHandler = () => {
    addBook(title, description);
    props.booksRefresh(); // 这里加上props.前缀
  }
  // ...其余代码
}

额外提示

父组件传递函数的写法是完全正确的,问题只出在子组件接收props的环节。记住React组件的参数规则,以后就不会再踩这个坑啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 08:47:52