Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 类型';无效';不可分配给类型';((事件:MouseEvent<;HTMLInputElement>;)=>;void)|未定义'; import*as React from“React”; 导入“/App.css”; 从“/components/PageTwo”导入第二页; 导出接口IPropsk{ 数据?:数组; fetchData?(值:字符串):空; } 导出接口IState{ isLoaded:布尔值; 点击:数组; 值:字符串; } 类应用程序扩展了React.Component{ 构造器(道具:IPropsk){ 超级(道具); 此.state={ isLoaded:false, 点击次数:[], 值:“” this.handleChange=this.handleChange.bind(this); } fetchData=val=>{ 警报(val); }; 手变(活动){ this.setState({value:event.target.value}); } render(){ 返回(_Javascript_Reactjs_Typescript - Fatal编程技术网

Javascript 类型';无效';不可分配给类型';((事件:MouseEvent<;HTMLInputElement>;)=>;void)|未定义'; import*as React from“React”; 导入“/App.css”; 从“/components/PageTwo”导入第二页; 导出接口IPropsk{ 数据?:数组; fetchData?(值:字符串):空; } 导出接口IState{ isLoaded:布尔值; 点击:数组; 值:字符串; } 类应用程序扩展了React.Component{ 构造器(道具:IPropsk){ 超级(道具); 此.state={ isLoaded:false, 点击次数:[], 值:“” this.handleChange=this.handleChange.bind(this); } fetchData=val=>{ 警报(val); }; 手变(活动){ this.setState({value:event.target.value}); } render(){ 返回(

Javascript 类型';无效';不可分配给类型';((事件:MouseEvent<;HTMLInputElement>;)=>;void)|未定义'; import*as React from“React”; 导入“/App.css”; 从“/components/PageTwo”导入第二页; 导出接口IPropsk{ 数据?:数组; fetchData?(值:字符串):空; } 导出接口IState{ isLoaded:布尔值; 点击:数组; 值:字符串; } 类应用程序扩展了React.Component{ 构造器(道具:IPropsk){ 超级(道具); 此.state={ isLoaded:false, 点击次数:[], 值:“” this.handleChange=this.handleChange.bind(this); } fetchData=val=>{ 警报(val); }; 手变(活动){ this.setState({value:event.target.value}); } render(){ 返回(,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,在您的代码this.fetchData(“dfd”)中,您正在调用该函数。该函数返回的voidvoid不可分配给需要函数的onClick 修理 创建一个调用fetchData的新函数,例如onClick={()=>this.fetchData(“dfd”)} 更多 这是TypeScript防止的一个非常常见的错误您还可以执行以下操作 <input type="button" onClick={this.fetchData("dfd")} value="Search" /> 或者,

在您的代码
this.fetchData(“dfd”)
中,您正在调用该函数。该函数返回的
void
void
不可分配给需要函数的
onClick

修理 创建一个调用fetchData的新函数,例如
onClick={()=>this.fetchData(“dfd”)}

更多
这是TypeScript防止的一个非常常见的错误您还可以执行以下操作

 <input type="button" onClick={this.fetchData("dfd")} value="Search" />

或者,您可以为
事件设置类型,例如
React.MouseEvent
。您可以阅读更多有关它的信息。

您可以这样设置类型,不会出现错误

fetchData = (val: string) => (event: any) => {
  alert(val);
};
导出接口IPropsk{
数据?:数组;
fetchData?():(值:字符串)=>void;
}

对于功能组件,我们使用
React.MouseEvent
并将其清除

export interface IPropsk {
    data?: Array<Items>;
    fetchData?(): (value: string) => void;
}
正如@basarat所说,当您有类似于
button.onclick=thisFunction();
的东西时,您已经在调用该函数了。您可能只想分配该函数,而不想调用它

因此,您可以这样编写
button.onclick=thisFunction;

我想使用这种类型

const clickHandler = () => {
  return (event: React.MouseEvent) => {
    ...do stuff...
    event.preventDefault();
  }
}

this.fetchData(“dfd”)}value=“Search”/>我在上面一行添加了这一点,但得到了以下错误lambda在JSX属性中被禁止,因为它们的渲染性能受到影响。您得到该错误不是因为TypeScript,而是因为TsLint。您可以调整Linter或更改方法。在渲染中使用=>不是很糟糕吗?@ClaudiuCreanga它可以强制不必要的重新渲染,这就是为什么它经常被避免。请看这里的解释:只是一个提示,链接不再有效(被重定向)。Saved my day兄弟,ThanksHow这个答案与@basarat接受的答案不同还是贡献更多?
const clickHandler = () => {
  return (event: React.MouseEvent) => {
    ...do stuff...
    event.preventDefault();
  }
}
onClick={()=>this.fetchData("dfd")}