欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

React報錯之Parameter event implicitly has an any type解決

 更新時間:2022年08月29日 14:52:44   作者:chuck  
這篇文章主要為大家介紹了React報錯之Parameter event implicitly has an any type,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

引言

原文鏈接:bobbyhadz.com/blog/react-…

作者:Borislav Hadzhiev

正文從這開始~

總覽

當(dāng)我們不在事件處理函數(shù)中為事件聲明類型時,會產(chǎn)生"Parameter 'event' implicitly has an 'any' type"錯誤。為了解決該錯誤,顯示地為event參數(shù)聲明類型。

比如說,在input元素上,將處理change事件聲明類型為React.ChangeEvent<HTMLInputElement>

這里有個示例用來展示錯誤是如何發(fā)生的。

// App.tsx
function App() {
  // ?? Parameter 'event' implicitly has an 'any' type.ts(7006)
  const handleChange = event => {
    console.log(event.target.value);
    console.log(event.target);
  };
  return (
    <div>
      <input onChange={handleChange} type="text" id="message" />
    </div>
  );
}
export default App;

示例中的問題在于,我們沒有顯示地為事件處理函數(shù)的event參數(shù)聲明類型。

設(shè)置類型

為了解決該錯誤,我們必須根據(jù)事件類型為參數(shù)設(shè)置一個類型。

// App.tsx
function App() {
  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
    console.log(event.target.value);
    console.log(event.target);
  };
  return (
    <div>
      <input onChange={handleChange} type="text" id="message" />
    </div>
  );
}
export default App;

我們將事件的類型聲明為React.ChangeEvent<HTMLInputElement> ,因為我們正在為input元素聲明一個onChange事件。

你要找出事件的類型,最簡單的方法是將事件處理器內(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ù)并正確對其類型聲明。

下面是一個例子,說明如何用同樣的方法確定onClick事件的類型。

// App.tsx
function App() {
  // ??? event is written inline
  return (
    <div>
      <button onClick={e => console.log(e)}>Click</button>
    </div>
  );
}
export default App;

我們將鼠標(biāo)懸浮在內(nèi)聯(lián)的e參數(shù)上,并發(fā)現(xiàn)其類型是什么?,F(xiàn)在我們能夠?qū)⑹录幚沓绦蛱崛〉揭粋€函數(shù)中。

// App.tsx
function App() {
  const handleClick = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
    console.log(e.target);
  };
  return (
    <div>
      <button onClick={handleClick}>Click</button>
    </div>
  );
}
export default App;

現(xiàn)在事件的類型正確了。我們不會得到"Parameter 'event' implicitly has an 'any' type"錯誤。

逃生艙any

如果你不想正確地為事件聲明類型,你只是想擺脫錯誤,那么可以將事件類型設(shè)置為any

// App.tsx
function App() {
  // ??? explicitly set type to any
  const handleClick = (e: any) => {
    console.log(e.target);
  };
  return (
    <div>
      <button onClick={handleClick}>Click</button>
    </div>
  );
}
export default App;

在TypeScript中,any類型可以有效地關(guān)閉類型檢查。因此,我們現(xiàn)在可以在event上訪問任何屬性。

這樣就解決了錯誤,因為現(xiàn)在事件被顯式地設(shè)置為any類型,而之前是隱式地設(shè)置為any類型。

然而,一般來說我們最好避免使用any類型。

確定類型

下面是一個如何確定表form元素上的onSubmit事件類型的例子。

function App() {
  // ??? event written inline
  return (
    <div>
      <form onSubmit={e => console.log(e)}></form>
    </div>
  );
}
export default App;

我們將鼠標(biāo)懸浮在內(nèi)聯(lián)的e參數(shù)上,發(fā)現(xiàn)提交事件應(yīng)該類型聲明為React.FormEvent<HTMLFormElement>。

現(xiàn)在我們知道了正確的類型,我們就可以提取事件處理函數(shù)。

function App() {
  const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => {
    event.preventDefault();
    console.log(event.target);
  };
  return (
    <div>
      <form onSubmit={handleSubmit}>
        <input type="submit" value="Submit" />
      </form>
    </div>
  );
}
export default App;

這種方法適用于所有的事件處理器,一旦你知道了事件的正確類型,你就可以提取你的處理函數(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

以上就是React報錯之Parameter event implicitly has an any type解決的詳細(xì)內(nèi)容,更多關(guān)于React報錯解決的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • React使用highlight.js Clipboard.js實現(xiàn)代碼高亮復(fù)制

    React使用highlight.js Clipboard.js實現(xiàn)代碼高亮復(fù)制

    這篇文章主要為大家介紹了React使用highlight.js Clipboard.js實現(xiàn)代碼高亮復(fù)制功能示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • React?中如何將CSS?visibility?屬性設(shè)置為?hidden

    React?中如何將CSS?visibility?屬性設(shè)置為?hidden

    這篇文章主要介紹了React中如何將CSS?visibility屬性設(shè)置為?hidden,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • 在React Native中添加自定義字體的方法詳解

    在React Native中添加自定義字體的方法詳解

    在這篇指南中,我們將探索使用 Google Fonts 在 React Native 應(yīng)用中添加自定義字體的方法,字體是優(yōu)秀用戶體驗的基石,使用定制字體可以為你的應(yīng)用程序提供獨特的身份,需要的朋友可以參考下
    2024-02-02
  • React中Provider組件詳解(使用場景)

    React中Provider組件詳解(使用場景)

    這篇文章主要介紹了React中Provider組件使用場景,使用Provider可以解決數(shù)據(jù)層層傳遞和每個組件都要傳props的問題,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • react-navigation之動態(tài)修改title的內(nèi)容

    react-navigation之動態(tài)修改title的內(nèi)容

    這篇文章主要介紹了react-navigation之動態(tài)修改title的內(nèi)容,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • ahooks解決React閉包問題方法示例

    ahooks解決React閉包問題方法示例

    這篇文章主要為大家介紹了ahooks解決React閉包問題方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • React中setState同步異步場景的使用

    React中setState同步異步場景的使用

    本文主要介紹了React中setState同步異步場景的使用,文中根據(jù)實例編碼詳細(xì)介紹的十分詳盡,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 詳解React 元素渲染

    詳解React 元素渲染

    這篇文章主要介紹了React 元素渲染的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • React+Ant Design開發(fā)環(huán)境搭建的實現(xiàn)步驟

    React+Ant Design開發(fā)環(huán)境搭建的實現(xiàn)步驟

    這篇文章主要介紹了React+Ant Design開發(fā)環(huán)境搭建的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • React-Native使用Mobx實現(xiàn)購物車功能

    React-Native使用Mobx實現(xiàn)購物車功能

    本篇文章主要介紹了React-Native使用Mobx實現(xiàn)購物車功能,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09

最新評論