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

React函数组件调用Props传入的toggleSideBar报错:不是函数怎么办?

解决'toggleSideBar不是函数'的报错

核心排查与修复方案:

  • 校验父组件传参正确性
    确保父组件向Sidebar传递的toggleSideBar是一个函数,而非undefined、null或其他类型。比如避免写成<Sidebar toggleSideBar={toggleSideBar()} />(这种写法会直接执行函数并传递返回值),正确写法应为<Sidebar toggleSideBar={toggleSideBar} />。

  • 添加默认值避免未传参报错
    给props设置空函数默认值,防止未传递该属性时触发错误:

    const Sidebar = ({ isOpenSidebar, toggleSideBar = () => {} }) => {
      const closeSideBar = () => {
        toggleSideBar()
      };
      // ...组件其他逻辑
    };
    
  • 检查命名拼写一致性
    确认父组件传递的属性名与子组件解构的toggleSideBar完全一致,包括大小写。比如父组件若写成togglesidebar(小写s),子组件解构的toggleSideBar会拿到undefined,导致报错。

  • 用类型校验提前发现问题
    借助PropTypes做强制类型校验,提前捕获参数类型错误:

    import PropTypes from 'prop-types';
    
    const Sidebar = (props) => {
      const { isOpenSidebar, toggleSideBar} = props;
      const closeSideBar = () => {
        toggleSideBar()
      };
      // ...组件其他逻辑
    };
    
    Sidebar.propTypes = {
      toggleSideBar: PropTypes.func.isRequired,
      isOpenSidebar: PropTypes.bool.isRequired
    };
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:52:08