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

React報(bào)錯(cuò)之Parameter event implicitly has an any type解決

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

引言

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

作者:Borislav Hadzhiev

正文從這開(kāi)始~

總覽

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

比如說(shuō),在input元素上,將處理change事件聲明類(lèi)型為React.ChangeEvent<HTMLInputElement>

這里有個(gè)示例用來(lái)展示錯(cuò)誤是如何發(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;

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

設(shè)置類(lèi)型

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

// 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;

我們將事件的類(lèi)型聲明為React.ChangeEvent<HTMLInputElement> ,因?yàn)槲覀冋跒?code>input元素聲明一個(gè)onChange事件。

你要找出事件的類(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)型聲明。

下面是一個(gè)例子,說(shuō)明如何用同樣的方法確定onClick事件的類(lèi)型。

// 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)其類(lèi)型是什么。現(xiàn)在我們能夠?qū)⑹录幚沓绦蛱崛〉揭粋€(gè)函數(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)在事件的類(lèi)型正確了。我們不會(huì)得到"Parameter 'event' implicitly has an 'any' type"錯(cuò)誤。

逃生艙any

如果你不想正確地為事件聲明類(lèi)型,你只是想擺脫錯(cuò)誤,那么可以將事件類(lèi)型設(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類(lèi)型可以有效地關(guān)閉類(lèi)型檢查。因此,我們現(xiàn)在可以在event上訪問(wèn)任何屬性。

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

然而,一般來(lái)說(shuō)我們最好避免使用any類(lèi)型。

確定類(lèi)型

下面是一個(gè)如何確定表form元素上的onSubmit事件類(lèi)型的例子。

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)該類(lèi)型聲明為React.FormEvent<HTMLFormElement>。

現(xiàn)在我們知道了正確的類(lèi)型,我們就可以提取事件處理函數(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;

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

    React Native中TabBarIOS的簡(jiǎn)單使用方法示例

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

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

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

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

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

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

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

最新評(píng)論

乌拉特前旗| 富锦市| 天等县| 同江市| 白山市| 南安市| 鸡西市| 贵德县| 新津县| 临邑县| 克拉玛依市| 大方县| 泸溪县| 孙吴县| 平远县| 久治县| 临汾市| 鹤庆县| 宜丰县| 库伦旗| 会昌县| 阿图什市| 靖西县| 城步| 扎鲁特旗| 临汾市| 西乌珠穆沁旗| 万山特区| 武宁县| 聂拉木县| 句容市| 鹤庆县| 乌鲁木齐市| 二连浩特市| 聂拉木县| 搜索| 历史| 喜德县| 合肥市| 江源县| 景宁|