解決React報錯Property?'value'?does?not?exist?on?type?EventTarget
總覽
當event參數(shù)的類型不正確時,會產(chǎn)生"Property 'value' does not exist on type EventTarget"錯誤。為了解決該錯誤,將event的類型聲明為React.ChangeEvent<HTMLInputElement> 。然后就可以通過event.target.value 來訪問其值。

這里有個示例用來展示錯誤是如何發(fā)生的。
// App.tsx
function App() {
// ??? incorrect event type
const handleChange = (event: Event) => {
console.log(event.target?.value);
};
return (
<div>
{/* ?? Property 'value' does not exist on type 'EventTarget'. */}
<input onChange={handleChange} type="text" id="message" />
</div>
);
}
export default App;
正確聲明類型
為了解決該錯誤,我們必須將event參數(shù)的類型聲明為React.ChangeEvent<HTMLInputElement>。
// App.tsx
function App() {
// ? correct event type
const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
console.log(event.target.value);
};
return (
<div>
<input onChange={handleChange} type="text" id="message" />
</div>
);
}
export default App;
React中的ChangeEvent類型有一個target屬性,引用的是事件被派發(fā)的元素。
找出類型
你要找出事件的類型,最簡單的方法是將事件處理內(nèi)聯(lián)編寫,并將鼠標懸浮在函數(shù)的event參數(shù)上。
// App.tsx
function App() {
// ??? event is written inline
return (
<div>
<input
onChange={e => console.log(e.target.value)}
type="text"
id="message"
/>
</div>
);
}
export default App;

截圖顯示,當我們將鼠標懸停在內(nèi)聯(lián)事件處理器的e變量上時,我們便得到了事件的正確類型。
這種方法適用于所有的事件處理器,一旦你知道了事件的正確類型,你就可以提取你的處理函數(shù)并正確得對其類型聲明。
TypeScript總是能夠推斷出內(nèi)聯(lián)事件處理器的事件類型,因為你已經(jīng)安裝了React的類型定義文件。
# ??? with NPM npm install --save-dev @types/react @types/react-dom # ---------------------------------------------- # ??? with YARN yarn add @types/react @types/react-dom --dev
總結
為了解決文章開頭的錯誤,我們需要正確的聲明event參數(shù)的類型。最便捷的找出事件類型的方式是,內(nèi)聯(lián)編寫事件處理函數(shù),并將鼠標懸浮到e變量上,從而查看真正的事件類型。
原文鏈接:bobbyhadz.com/blog/react-…
以上就是解決React報錯Property 'value' does not exist on type EventTarget的詳細內(nèi)容,更多關于React 報錯的資料請關注腳本之家其它相關文章!
- 解決React報錯Property does not exist on type 'JSX.IntrinsicElements'
- 解決React報錯Property value does not exist on type HTMLElement
- 解決React報錯Cannot assign to 'current' because it is a read-only property
- Can't?perform?a?React?state?update?on?an?unmounted?component報錯解決
- Objects are not valid as a React child報錯解決
- 解決React報錯No duplicate props allowed
- 解決React報錯`value` prop on `input` should not be null
- 解決React報錯Property 'X' does not exist on type 'HTMLElement'
相關文章
React利用scheduler思想實現(xiàn)任務的打斷與恢復
這篇文章主要為大家詳細介紹了React如何利用scheduler思想實現(xiàn)任務的打斷與恢復,文中的示例代碼講解詳細,感興趣的小伙伴可以參考一下2024-03-03
React jsx轉(zhuǎn)換與createElement使用超詳細講解
這篇文章主要介紹了React jsx轉(zhuǎn)換與createElement使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧2022-11-11
React Native之prop-types進行屬性確認詳解
本篇文章主要介紹了React Native之prop-types進行屬性確認詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-12-12

