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

React TS传带参函数给子组件报Expected 0 arguments, but got 1错误

TS类型报错修复方案

报错根因

TypeScript 采用结构化类型校验规则,你在子组件IProps接口中把deleteImgfunc声明为无入参函数,和实际场景下“子组件调用时需要传入文件名参数、父组件实现逻辑也需要接收对应参数”的函数真实结构不匹配,因此触发Expected 0 arguments, but got 1的类型校验错误。
另外你贴的子组件代码里<Pressable标签误多写了一个右花括号,属于语法笔误,修复时可以一并处理。

修复操作

  • 修改子组件IProps接口中deleteImgfunc的类型签名,明确声明入参类型为字符串
  • 给父组件中用useCallback包裹的deleteImgfunc补全入参类型,避免隐式any类型告警
  • 修正子组件里<Pressable标签多余的右花括号笔误

修复后代码

父组件 insertFarmDiaryDetail.tsx

import { useCallback } from 'react';
import InsertFarmDiarySubPage from './InsertFarmDiarySubPage';

const insertFarmDiaryDetail = () => {
  // 补全入参类型
  const deleteImgfunc = useCallback((value: string) => {
    // 原有删除图片业务逻辑
  }, []);

  return (
    <InsertFarmDiarySubPage
      deleteImgfunc={deleteImgfunc}
    />
  )
}

export default insertFarmDiaryDetail;

子组件 InsertFarmDiarySubPage.tsx

import { forwardRef } from 'react';
import { Pressable } from 'react-native';

// 修正函数类型:声明该方法接收一个string类型的文件名参数
interface IProps {
    deleteImgfunc?: (imgName: string) => void;
}

const v = {
  index: 0,
  name: "growthLength 1",
  size: 22396,
  type: "image/jpeg",
  uri: "hjk"
}

const InsertClass44 = forwardRef(({ deleteImgfunc }: IProps, ref: any): JSX.Element => {
    return (
      <Pressable
        onPress={() => deleteImgfunc?.(v?.name)}
      >
        {/* 原有业务组件内容 */}
      </Pressable>    
    );
})

export default InsertClass44;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:03:14