解決React報(bào)錯(cuò)Property?'value'?does?not?exist?on?type?EventTarget
總覽
當(dāng)event參數(shù)的類型不正確時(shí),會(huì)產(chǎn)生"Property 'value' does not exist on type EventTarget"錯(cuò)誤。為了解決該錯(cuò)誤,將event的類型聲明為React.ChangeEvent<HTMLInputElement> 。然后就可以通過(guò)event.target.value 來(lái)訪問(wèn)其值。

這里有個(gè)示例用來(lái)展示錯(cuò)誤是如何發(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;
正確聲明類型
為了解決該錯(cuò)誤,我們必須將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類型有一個(gè)target屬性,引用的是事件被派發(fā)的元素。
找出類型
你要找出事件的類型,最簡(jiǎn)單的方法是將事件處理內(nèi)聯(lián)編寫,并將鼠標(biāo)懸浮在函數(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;

截圖顯示,當(dāng)我們將鼠標(biāo)懸停在內(nèi)聯(lián)事件處理器的e變量上時(shí),我們便得到了事件的正確類型。
這種方法適用于所有的事件處理器,一旦你知道了事件的正確類型,你就可以提取你的處理函數(shù)并正確得對(duì)其類型聲明。
TypeScript總是能夠推斷出內(nèi)聯(lián)事件處理器的事件類型,因?yà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
總結(jié)
為了解決文章開(kāi)頭的錯(cuò)誤,我們需要正確的聲明event參數(shù)的類型。最便捷的找出事件類型的方式是,內(nèi)聯(lián)編寫事件處理函數(shù),并將鼠標(biāo)懸浮到e變量上,從而查看真正的事件類型。
原文鏈接:bobbyhadz.com/blog/react-…
以上就是解決React報(bào)錯(cuò)Property 'value' does not exist on type EventTarget的詳細(xì)內(nèi)容,更多關(guān)于React 報(bào)錯(cuò)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 解決React報(bào)錯(cuò)Property does not exist on type 'JSX.IntrinsicElements'
- 解決React報(bào)錯(cuò)Property value does not exist on type HTMLElement
- 解決React報(bào)錯(cuò)Cannot assign to 'current' because it is a read-only property
- Can't?perform?a?React?state?update?on?an?unmounted?component報(bào)錯(cuò)解決
- Objects are not valid as a React child報(bào)錯(cuò)解決
- 解決React報(bào)錯(cuò)No duplicate props allowed
- 解決React報(bào)錯(cuò)`value` prop on `input` should not be null
- 解決React報(bào)錯(cuò)Property 'X' does not exist on type 'HTMLElement'
相關(guān)文章
React利用scheduler思想實(shí)現(xiàn)任務(wù)的打斷與恢復(fù)
這篇文章主要為大家詳細(xì)介紹了React如何利用scheduler思想實(shí)現(xiàn)任務(wù)的打斷與恢復(fù),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下2024-03-03
React jsx轉(zhuǎn)換與createElement使用超詳細(xì)講解
這篇文章主要介紹了React jsx轉(zhuǎn)換與createElement使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-11-11
React Native之prop-types進(jìn)行屬性確認(rèn)詳解
本篇文章主要介紹了React Native之prop-types進(jìn)行屬性確認(rèn)詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
教你如何實(shí)現(xiàn)在react項(xiàng)目中嵌入Blazor
這篇文章主要介紹了如何實(shí)現(xiàn)在react現(xiàn)有項(xiàng)目中嵌入Blazor,通過(guò)這個(gè)案例我們可以知道 blazor也可以像react那樣嵌入在任何的現(xiàn)有項(xiàng)目中,并且使用方便,需要的朋友可以參考下2023-01-01
React?Fiber?樹(shù)思想解決業(yè)務(wù)實(shí)際場(chǎng)景詳解
這篇文章主要為大家介紹了React?Fiber?樹(shù)思想解決業(yè)務(wù)實(shí)際場(chǎng)景詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
React項(xiàng)目中className運(yùn)用及問(wèn)題解決
這篇文章主要為大家介紹了React項(xiàng)目中className運(yùn)用及問(wèn)題解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
hooks寫React組件的5個(gè)注意細(xì)節(jié)詳解
這篇文章主要為大家介紹了hooks寫React組件的5個(gè)需要注意的細(xì)節(jié)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03

