解決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>
。然后就可以通過event.target.value
來訪問其值。
這里有個(gè)示例用來展示錯(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ā)的元素。
找出類型
你要找出事件的類型,最簡單的方法是將事件處理內(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ù)并正確得對其類型聲明。
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é)
為了解決文章開頭的錯(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ò)的資料請關(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)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-07-07reactjs學(xué)習(xí)解決unknown at rule @tailwind css
這篇文章主要介紹了reactjs學(xué)習(xí)解決unknown at rule @tailwind css問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02Shopee在React?Native?架構(gòu)方面的探索及發(fā)展歷程
這篇文章主要介紹了Shopee在React?Native?架構(gòu)方面的探索,本文會(huì)從發(fā)展歷史、架構(gòu)模型、系統(tǒng)設(shè)計(jì)、遷移方案四個(gè)方向逐一介紹我們?nèi)绾我徊讲降貪M足多團(tuán)隊(duì)在復(fù)雜業(yè)務(wù)中的開發(fā)需求,需要的朋友可以參考下2022-07-07react拖拽react-beautiful-dnd一維數(shù)組二維數(shù)組拖拽功能
二維數(shù)組可以拖拽,但是不可以編輯+拖拽,如果想要實(shí)現(xiàn)編輯+拖拽,還是需要轉(zhuǎn)換成一維數(shù)組,本文給大家介紹react拖拽react-beautiful-dnd的相關(guān)知識,感興趣的朋友跟隨小編一起看看吧2024-03-03React中異步數(shù)據(jù)更新不及時(shí)問題及解決
這篇文章主要介紹了React中異步數(shù)據(jù)更新不及時(shí)問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03修復(fù)Next.js中window?is?not?defined方法詳解
這篇文章主要為大家介紹了修復(fù)Next.js中window?is?not?defined方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12React如何實(shí)現(xiàn)全屏監(jiān)聽Esc鍵
這篇文章主要介紹了React如何實(shí)現(xiàn)全屏監(jiān)聽Esc鍵,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08