Javascript 更改时的输入,包括反应和;类型脚本错误:jsx无lambda无绑定

Javascript 更改时的输入,包括反应和;类型脚本错误:jsx无lambda无绑定,javascript,reactjs,typescript,typescript-typings,tslint,Javascript,Reactjs,Typescript,Typescript Typings,Tslint,我正在创建一个简单的任务演示并制作taskNameInput组件。你可以看到我尝试过几种方法来处理这个问题,但我总是出错。如何对Typescript作出反应 您可以看到我的tsconfig.json和tslint.json的repo:,我使用的是tslint react附带jsx no lambda和jsx no bind 触发jsx无绑定错误 public renderTaskInput(): React.ReactElement<{}> { return (

我正在创建一个简单的任务演示并制作taskNameInput组件。你可以看到我尝试过几种方法来处理这个问题,但我总是出错。如何对Typescript作出反应

您可以看到我的tsconfig.json和tslint.json的repo:,我使用的是
tslint react
附带
jsx no lambda
jsx no bind

触发jsx无绑定错误

public renderTaskInput(): React.ReactElement<{}> {
    return (
      <div>
        <input
          onChange={this.handleNewTaskName.bind(this)}
        />
      </div>
    )
  }
 public renderTaskInput(): React.ReactElement<{}> {
    return (
      <div>
        <input
          onChange={(e: React.FormEvent<HTMLInputElement>) => this.handleNewTaskName(e)}
        />
      </div>
    )
  }

请注意handleNewTaskName是如何用name=()=>{}而不仅仅是name(){}实例化的

在构造函数中绑定方法,或使用es7类语法。以下是解决方案:

  public handleNewTaskName = (e: React.FormEvent<HTMLInputElement>) => {
  console.log(e.currentTarget.value)
  this.setState({newTaskTitle: e.currentTarget.value})
 }
 public renderTaskInput(): React.ReactElement<{}> {
    return (
      <div>
        <input
          placeholder='New Task Name'
          name='app-tasks-inputTaskName'
          onChange={this.handleNewTaskName}
        />
      </div>
    )
public handleNewTaskName=(e:React.FormEvent)=>{
console.log(e.currentTarget.value)
this.setState({newTaskTitle:e.currentTarget.value})
}
公共renderTaskInput():React.ReactElement{
返回(
)

我很想看到一个解决方案,它以某种方式利用TypeScript的能力来推断事件类型,而不必键入
React.FormEvent
,但我自己无法想出它。
  public handleNewTaskName = (e: React.FormEvent<HTMLInputElement>) => {
  console.log(e.currentTarget.value)
  this.setState({newTaskTitle: e.currentTarget.value})
 }
 public renderTaskInput(): React.ReactElement<{}> {
    return (
      <div>
        <input
          placeholder='New Task Name'
          name='app-tasks-inputTaskName'
          onChange={this.handleNewTaskName}
        />
      </div>
    )