繁体   English   中英

“字符串”类型的参数不可分配给“ChangeEventHandler”类型的参数 '

Argument of type 'string' is not assignable to parameter of type 'ChangeEventHandler'

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在学习 React Typescript,并且我已经定义了一个 onChange 事件道具。 但是低于提到的错误。

输入.tsx

type InputProps ={
    value: string,
    handleChange: (event:React.ChangeEventHandler<HTMLInputElement>)=> void;
}

export const Input = (props: InputProps) =>{
    const handleInputChange:React.ChangeEventHandler<HTMLInputElement> =(event)=>{
        console.log(event.currentTarget.value);
        props.handleChange(event.currentTarget.value)//Having issue in this line
    }
    return <input type="text" value={props.value} onChange={handleInputChange} />
}

应用程序.tsx

<Input handleChange={value=> console.log(value)} value=""/>

错误:“字符串”类型的参数不可分配给“ChangeEventHandler”类型的参数。 在此处输入图像描述

2 个回复

您已将handleChange定义为接受事件 object 的 function:

type InputProps ={
    value: string,
    handleChange: (event:React.ChangeEventHandler<HTMLInputElement>)=> void;
// −−−−−−−−−−−−−−−−^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
}

但是你试图给它传递一个字符串:

props.handleChange(event.currentTarget.value)//Having issue in this line
// −−−−−−−−−−−−−−−−^^^^^^^^^^^^^^^^^^^^^^^^^

定义 function 使其接受字符串,或将事件 object 传递给它。 我会做前者,定义它以便它接受一个字符串:

type InputProps = {
    value: string;
    handleChange: (value: string) => void;
// −−−−−−−−−−−−−−−−^^^^^^^^^^^^^
};

游乐场链接

但如果您愿意,请将事件 object 传递给它:

type InputProps = {
    value: string;
    handleChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
// −−−−−−−−−−−−−−−−−−−−−−−^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
};

// ...

props.handleChange(event);
// −−−−−−−−−−−−−−−−^^^^^

请注意, event参数是ChangeEvent<HTMLInputElement> ,而不是ChangeEventHandler<HTMLInputElement>

游乐场链接

我猜你要找的是类型定义中的props.handleChange(event) ,你已经说过参数event的类型是React.ChangeEventHandler<HTMLInputElement>但是你使用的是event.target.value实际上是一个string ,所以你得到一个错误。

2 “字符串”类型的参数不可分配给“IScriptEditorProps”类型的参数

我现在已经测试了很多解决方案,实际上我只是想在 SharePoint 上实现这个脚本编辑器。 出于某种原因,当我尝试实现它时,构造函数内部没有参数,所以我想我会找出问题所在,但我不能。 constructor调用的参数是从IScriptEditorProps导入的 我必须为我的constr ...

8 X 不可分配给“字符串”类型的参数

如果这很直接,我很抱歉,我是 Typescript 的新手。 我遇到了一个错误,其中“类型 '{ params: { slug: any; }; }' 的参数不能分配给类型为 'string' 的参数。 我已经将数据类型定义为pathsData数据: const pathsData : strin ...

9 输入'{状态:字符串; }' 不可分配给类型 'MyType'。 属性“状态”的类型不兼容。 类型“字符串”不可分配给类型

我有一个 .ts 文件,我想使用以下类型定义: 当我将这种类型用于直接设置值的变量时,一切都很好: 但是,如果我使用变量来设置值,则会出现错误: 错误: 你可以在这里试穿我尝试了不同的选项(像这样),但问题是我的类型是从 Json 模式生成的,我无法编辑生成的文件。 ...

10 错误:类型“字符串 []”不可分配给类型“字符串”

我有一个迷你项目,我需要制作一个带有历史的简单计算器。 在此项目的一部分中,如果单击其中一个历史记录项,则应将其删除,但是在执行此操作时出现错误。 你有解决这个错误的方法和理论吗? 关于我删除您拥有的项目的解决方案类型 'string[]' 不能分配给类型 'string'。 let text: ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM