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

React+TypeScript子组件函数间传参变量为undefined问题排查

问题分析与解决方法

问题根源

你的filterItem函数定义时使用了解构语法({ myEnum }: myProps),这表示它期望接收一个符合myProps接口的对象作为参数。但你在onClick回调里调用时,直接传入了myEnum(即字符串'up'),函数内部尝试从传入的字符串中解构myEnum属性,自然无法获取到有效值,所以打印结果为undefined。

解决办法

有两种可行的修正方式:

方式一:修改函数参数为单个值

调整filterItem的参数定义,直接接收myEnum的值,无需解构:

const Checkbox = ({ myEnum, myName }: myProps) => {
  // 直接接收myEnum值,类型复用myProps中的定义
  function filterItem(myEnum: myProps['myEnum']) {
    console.log(myEnum); // 现在会正常打印'up'
  }

  return (
    <div>
      <div
        className="input-feild-1"
        onClick={() => {
          filterItem(myEnum); // 直接传入值即可
        }}
      ></div>
      <div>{myName}</div> {/* 注意:原代码中的statusName应该是myName,否则会报错 */}
    </div>
  );
};

方式二:保持函数参数结构,调用时传入对象

如果需要保留函数的参数解构形式,调用时要传入包含myEnum属性的对象:

const Checkbox = ({ myEnum, myName }: myProps) => {
  function filterItem({ myEnum }: myProps) {
    console.log(myEnum); // 正常打印'up'
  }

  return (
    <div>
      <div
        className="input-feild-1"
        onClick={() => {
          // 传入符合myProps结构的对象
          filterItem({ myEnum, myName });
          // 或者只传需要的属性:filterItem({ myEnum });
        }}
      ></div>
      <div>{myName}</div> {/* 修正statusName为myName */}
    </div>
  );
};

额外提示

原代码中模板里的{statusName}是未定义的变量,建议改成{myName},避免运行时报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:35:23