javascript – TypeScript&React – 一个用于多个输入字段的onChange Handler
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – TypeScript&React – 一个用于多个输入字段的onChange Handler,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1337字,纯文字阅读大概需要2分钟。
内容图文
![javascript – TypeScript&React – 一个用于多个输入字段的onChange Handler](/upload/InfoBanner/zyjiaocheng/759/2217f01686944f36835303c64d66dbb4.jpg)
假设我有一个包含多个输入字段的表单.在正常的ES6 / React中,我会创建一个方法,所有输入字段都将其onChange处理程序指向.像这样的东西:
handleChange(e) {
e.preventDefault();
this.setState({[e.target.name]: e.target.value});
}
这有助于您拥有大量表单元素并且不必创建特定方法来处理每个表单元素.
这在TypeScript中是否可行?即使它不是类型安全的?
解决方法:
正如评论中所回答的那样,您在JavaScript中可以做的所有事情也都是有效的TypeScript.
但是,我猜你会从TypeScript编译器中获得错误(取决于你设置的编译器选项).
假设您的组件看起来像这样:
interface ComponentProps { }
interface ComponentState {
name: string
address: string
}
class MyComponent extends React.Component<ComponentProps, ComponentState> {
handleChange(e) {
e.preventDefault()
this.setState({ [e.target.name]: e.target.value })
}
}
我收到这个错误:
== External: (30,19): error TS2345: Argument of type ‘{ [x: number]: any; }’ is not assignable to parameter of type ‘ComponentState’.
== External: Property ‘name’ is missing in type ‘{ [x: number]: any; }’.
当使用noImplicitAny编译器选项(我喜欢使用)时,这个附加错误:
== External: (28,16): error TS7006: Parameter ‘e’ implicitly has an ‘any’ type.
如果你确定你的代码是正确的,你可以通过显式地为handleChange转换参数和setState的参数来消除这些错误.
handleChange(e: any) {
e.preventDefault()
this.setState({ [e.target.name]: e.target.value } as ComponentState)
}
内容总结
以上是互联网集市为您收集整理的javascript – TypeScript&React – 一个用于多个输入字段的onChange Handler全部内容,希望文章能够帮你解决javascript – TypeScript&React – 一个用于多个输入字段的onChange Handler所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。