解決React報(bào)錯(cuò)Property?'value'?does?not?exist?on?type?EventTarget
總覽
當(dāng)event參數(shù)的類(lèi)型不正確時(shí),會(huì)產(chǎn)生"Property 'value' does not exist on type EventTarget"錯(cuò)誤。為了解決該錯(cuò)誤,將event的類(lèi)型聲明為React.ChangeEvent<HTMLInputElement> 。然后就可以通過(guò)event.target.value 來(lái)訪(fǎng)問(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;
正確聲明類(lèi)型
為了解決該錯(cuò)誤,我們必須將event參數(shù)的類(lèi)型聲明為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類(lèi)型有一個(gè)target屬性,引用的是事件被派發(fā)的元素。
找出類(lèi)型
你要找出事件的類(lèi)型,最簡(jiǎn)單的方法是將事件處理內(nèi)聯(lián)編寫(xiě),并將鼠標(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í),我們便得到了事件的正確類(lèi)型。
這種方法適用于所有的事件處理器,一旦你知道了事件的正確類(lèi)型,你就可以提取你的處理函數(shù)并正確得對(duì)其類(lèi)型聲明。
TypeScript總是能夠推斷出內(nèi)聯(lián)事件處理器的事件類(lèi)型,因?yàn)槟阋呀?jīng)安裝了React的類(lèi)型定義文件。
# ??? 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ù)的類(lèi)型。最便捷的找出事件類(lèi)型的方式是,內(nèi)聯(lián)編寫(xiě)事件處理函數(shù),并將鼠標(biāo)懸浮到e變量上,從而查看真正的事件類(lèi)型。
原文鏈接: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中如何優(yōu)雅的處理事件響應(yīng)詳解
這篇文章主要給大家介紹了關(guān)于在React中如何優(yōu)雅處理事件響應(yīng)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-07-07
reactjs學(xué)習(xí)解決unknown at rule @tailwind css
這篇文章主要介紹了reactjs學(xué)習(xí)解決unknown at rule @tailwind css問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
Shopee在React?Native?架構(gòu)方面的探索及發(fā)展歷程
這篇文章主要介紹了Shopee在React?Native?架構(gòu)方面的探索,本文會(huì)從發(fā)展歷史、架構(gòu)模型、系統(tǒng)設(shè)計(jì)、遷移方案四個(gè)方向逐一介紹我們?nèi)绾我徊讲降貪M(mǎn)足多團(tuán)隊(duì)在復(fù)雜業(yè)務(wù)中的開(kāi)發(fā)需求,需要的朋友可以參考下2022-07-07
react拖拽react-beautiful-dnd一維數(shù)組二維數(shù)組拖拽功能
二維數(shù)組可以拖拽,但是不可以編輯+拖拽,如果想要實(shí)現(xiàn)編輯+拖拽,還是需要轉(zhuǎn)換成一維數(shù)組,本文給大家介紹react拖拽react-beautiful-dnd的相關(guān)知識(shí),感興趣的朋友跟隨小編一起看看吧2024-03-03
React中異步數(shù)據(jù)更新不及時(shí)問(wèn)題及解決
這篇文章主要介紹了React中異步數(shù)據(jù)更新不及時(shí)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
修復(fù)Next.js中window?is?not?defined方法詳解
這篇文章主要為大家介紹了修復(fù)Next.js中window?is?not?defined方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
React如何實(shí)現(xiàn)全屏監(jiān)聽(tīng)Esc鍵
這篇文章主要介紹了React如何實(shí)現(xiàn)全屏監(jiān)聽(tīng)Esc鍵,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08

