簡體   English   中英

屬性在類型上不存在-TypeScript

[英]Property does not exist on type - TypeScript

創建了自定義Form組件,該組件應該在子輸入更改時更改其data

長話短說:

在此處輸入圖片說明

在當前上下文中, currentTarget是表單, target是觸發事件的輸入。 target正是我需要的-因為我可以隨后更新數據:

this.setState({
  data: {
    [e.target.name]: e.target.value
  }
});

有任何想法嗎?

  • 事件類型錯誤?
  • 有沒有辦法在TypeScript中進行轉換(已經嘗試過)?
  • 方法錯誤?

編輯:像這樣的工作,但這只是錯誤的:

handleChange(e:React.FormEvent){let foo:any = e; this.setState({data:{[foo.target.name]:foo.target.value}}); }

經過一些實驗:

handleChange(e: React.FormEvent<HTMLFormElement>) { let name: string = (e.target as HTMLFormElement).name; let value: string = (e.target as HTMLFormElement).value; this.setState({ data: { [name]: value } });

這是有道理的,因為在這種情況下, HTMLInputElementtarget )被作為HTMLFormElement (listener)訪問。

可能會有更優雅的解決方案,但這有點奏效。

您如何調用函數handleChange?

我想你正在做這樣的事情:

onChange={this.handleChange()}

但您必須這樣做:

onChange={this.handleChange)}

實際上,您必須傳遞函數的引用,而不是調用函數

將參數更改為handleChange(e: React.FormEvent<HTMLFormElement>)並使用e.currentTarget.name

@thurt解釋了為什么在這個相關的SO問題中 ,我還在這里的類型定義文件中找到了一些有用的注釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM