React事件的正确类型是什么。最初,我只是any
为了简单起见而使用。现在,我正在尝试清理并避免any
完全使用。
所以像这样一个简单的形式:
export interface LoginProps {
login: {
[k: string]: string | Function
uname: string
passw: string
logIn: Function
}
}
@inject('login') @observer
export class Login extends Component<LoginProps, {}> {
update = (e: React.SyntheticEvent<EventTarget>): void => {
this.props.login[e.target.name] = e.target.value
}
submit = (e: any): void => {
this.props.login.logIn()
e.preventDefault()
}
render() {
const { uname, passw } = this.props.login
return (
<div id='login' >
<form>
<input
placeholder='Username'
type="text"
name='uname'
value={uname}
onChange={this.update}
/>
<input
placeholder='Password'
type="password"
name='passw'
value={passw}
onChange={this.update}
/>
<button type="submit" onClick={this.submit} >
Submit
</button>
</form>
</div>
)
}
}
我在这里使用什么类型作为事件类型?
React.SyntheticEvent<EventTarget>
似乎没有工作,因为我收到一个错误消息,name
并且value
不存在target
。
对于所有事件的更笼统的回答,我们将不胜感激。
谢谢
该SyntheticEvent接口是通用的:
interface SyntheticEvent<T> {
...
currentTarget: EventTarget & T;
...
}
并且currentTarget
是一般约束与的交集 EventTarget
。
另外,由于事件是由输入元素引起的,因此应使用FormEvent
(在定义文件中,react
docs
)。
应该:
update = (e: React.FormEvent<HTMLInputElement>): void => {
this.props.login[e.currentTarget.name] = e.currentTarget.value
}
问题内容: npm软件包允许我们在TypeScript应用程序内部使用React。我们将组件定义为 在这里,我们必须声明组件属性和状态的类型(在类型变量中)。 在声明了这些类型之后,TypeScript将使用该类型来验证组件的用法(传递给它的道具的形状)。 我想围绕这样的组件创建一个容器。容器将重复使用组件的道具。但是,为了创建具有相同道具的另一个组件,我必须再次重新声明道具的类型。或从原始组件文
我正在努力寻找 有什么不同?
问题内容: 我希望能够实例化一个Typescript类,在运行时可以获取该类和构造函数的详细信息。我想编写的函数将包含类名和构造函数参数。 问题答案: 您可以尝试: 编辑 此版本可在TypeScript操场上使用,例如:
我在我的React应用程序中使用TypeScript。我想严格检查传递给我的组件的道具类型,如果不匹配,就会抛出错误。 服务属性应该包含数量作为数字(通过接口指定),但即使我从父组件传递字符串,它也可以工作,并且typescript不会抛出错误。 同样的函数prop myFunc,它需要数字参数和返回类型是无效的。但是Im传递不同类型的默认参数,返回类型是布尔值。 为什么typescript不会抛
我正在用打字稿重写我的React应用程序。我正在尝试将所有组件实现为功能组件。 Typescript允许我们利用类型别名和接口来定义对象的形状或函数签名。我已经讲过了类型和接口的区别。 我读过的几乎所有文章都通过使用接口定义了一个组件,而这个接口本可以使用类型别名。据我所知,interface和type alias对于React组件给出了相同的结果,那么为什么几乎在每个定义中都使用了interfa
问题内容: 几个月前,我使用create-react-app启动了一个react项目,我对将项目从Javascript迁移到Typescript很感兴趣。 我看到有一种使用typescript使用标志创建react应用的方法: 但是我没有找到任何解释如何将现有的JS项目迁移到TS。我需要逐步完成它,以便可以同时使用.js和.ts文件,以便可以随时间进行转换。有人对这次迁移有任何经验吗?要执行此工作