最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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-router-dom 嵌套路由的實現(xiàn)

    react-router-dom 嵌套路由的實現(xiàn)

    這篇文章主要介紹了react-router-dom 嵌套路由的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 原生實現(xiàn)一個react-redux的代碼示例

    原生實現(xiàn)一個react-redux的代碼示例

    這篇文章主要介紹了原生實現(xiàn)一個react-redux的代碼示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • React Hooks核心原理深入分析講解

    React Hooks核心原理深入分析講解

    這篇文章主要介紹了react hooks實現(xiàn)原理,文中給大家介紹了useState dispatch 函數(shù)如何與其使用的 Function Component 進(jìn)行綁定,節(jié)后實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • 詳解React中錯誤邊界的原理實現(xiàn)與應(yīng)用

    詳解React中錯誤邊界的原理實現(xiàn)與應(yīng)用

    在React中,錯誤邊界是一種特殊的組件,用于捕獲其子組件樹中發(fā)生的JavaScript錯誤,并防止這些錯誤冒泡至更高層,導(dǎo)致整個應(yīng)用崩潰,下面我們就來看看它的具體應(yīng)用吧
    2024-03-03
  • 淺談React前后端同構(gòu)防止重復(fù)渲染

    淺談React前后端同構(gòu)防止重復(fù)渲染

    這篇文章主要介紹了淺談React前后端同構(gòu)防止重復(fù)渲染,首先解釋React前后端同構(gòu)、React首屏渲染的概念。然后通過這2個概念解決服務(wù)端渲染完成后瀏覽器端重復(fù)渲染的問題。有興趣的可以了解一下
    2018-01-01
  • React+Koa實現(xiàn)文件上傳的示例

    React+Koa實現(xiàn)文件上傳的示例

    這篇文章主要介紹了React+Koa實現(xiàn)文件上傳的示例,幫助大家更好的理解和學(xué)習(xí)使用React,感興趣的朋友可以了解下
    2021-04-04
  • React Native中TabBarIOS的簡單使用方法示例

    React Native中TabBarIOS的簡單使用方法示例

    最近在學(xué)習(xí)過程中遇到了很多問題,TabBarIOS的使用就是一個,所以下面這篇文章主要給大家介紹了關(guān)于React Native中TabBarIOS簡單使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-10-10
  • 詳解React 的幾種條件渲染以及選擇

    詳解React 的幾種條件渲染以及選擇

    這篇文章主要介紹了詳解React 的幾種條件渲染以及選擇,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • React懶加載實現(xiàn)原理深入分析

    React懶加載實現(xiàn)原理深入分析

    懶加載意思是不會預(yù)加載,而是需要使用某段代碼,某個組件或者某張圖片時,才加載他們(延遲加載),這篇文章主要介紹了React懶加載實現(xiàn)原理
    2022-11-11
  • React?組件傳?children?的各種案例方案詳解

    React?組件傳?children?的各種案例方案詳解

    自定義組件的時候往往需要傳?children,由于寫法比較多樣,我就總結(jié)了一下,要自定義的組件其中包含一個?title?和一個?children,本文通過實例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-10-10

最新評論

海宁市| 内黄县| 南涧| 滕州市| 洛浦县| 高安市| 孝感市| 永兴县| 安阳县| 太谷县| 岐山县| 营山县| 鸡西市| 白沙| 崇信县| 水富县| 花垣县| 商丘市| 本溪市| 大英县| 南涧| 饶阳县| 莱阳市| 温泉县| 沿河| 长沙县| 遵义县| 白沙| 晋宁县| 东阿县| 辉县市| 莱阳市| 盐池县| 满洲里市| 田阳县| 亚东县| 腾冲县| 彝良县| 翼城县| 湟中县| 汤阴县|