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

React组件传递回调函数报错:TypeError: handel_users_id is not a Function

问题分析与修复方案

你遇到的TypeError: handel_users_id is not a Function错误,结合代码来看主要有以下几个问题:

1. Usercontroller.js 中的无限循环与组件渲染逻辑问题

你在组件顶层直接调用了set_selected_user_id_("hello prop"),这会触发组件无限重渲染——每次执行setState都会让组件重新渲染,而重渲染又会再次执行这行代码,形成死循环。同时,这行代码会把selected_user_id_直接设为非空值,导致<Users>组件永远不会被渲染(因为渲染条件是selected_user_id_ === '')。

修复:删除这行直接调用的set_selected_user_id_,如果需要初始化值,直接在useState里设置:

const [selected_user_id_, set_selected_user_id_] = useState('hello prop');

或者如果是需要在组件挂载时执行,用useEffect包裹:

useEffect(() => {
  set_selected_user_id_("hello prop");
}, []); // 空依赖数组确保只执行一次

2. Users.js 中的未定义变量问题

你的onClick回调里使用了user.firebase_id,但user变量在Users组件中完全没有定义,这会触发另一个ReferenceError。你需要确保user是组件接收的props,或者在组件内部有正确的定义。

比如如果user是props的一部分:

function Users({ handel_users_id, user }) {
  // ...
  return (
    <>
      <Button layout="link" size="icon" aria-label="Edit" onClick={() => handel_users_id(user.firebase_id)}>
        <EditIcon className="w-5 h-5 mx-3" aria-hidden="true" />
      </Button>
    </>
  )
}

3. Users.js 中的函数定义语法错误

你在函数组件里用了类组件的函数赋值写法:handle_id = (id) => {},这在函数组件中是不合法的,必须用const声明函数:

const handle_id = (id) => {
  console.log(handel_users_id,"prop")
}

其他检查点

  • 确认handel_users_id的拼写在所有地方完全一致(包括大小写),避免因拼写错误导致prop传递失败。
  • 确保Users组件确实在Usercontroller.js中被正确导入,没有导入错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:27:43