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

解決React報錯Property value does not exist on type HTMLElement

 更新時間:2022年12月01日 15:47:02   作者:Borislav Hadzhiev  
這篇文章主要為大家介紹了React報錯Property value does not exist on type HTMLElement解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

總覽

當我們試圖訪問一個類型為HTMLElement的元素上的value屬性時,會產生"Property 'value' does not exist on type 'HTMLElement'"錯誤。為了解決該錯誤,在訪問屬性之前,使用類型斷言將元素類型斷言為HTMLInputElement。

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

// App.tsx
import {useEffect} from 'react';
export default function App() {
  useEffect(() => {
    const input = document.getElementById('message');
    // ?? Property 'value' does not exist on type 'HTMLElement'.ts(2339)
    console.log(input?.value);
  }, []);
  return (
    <div>
      <input id="message" defaultValue="Initial value" />
    </div>
  );
}

我們得到錯誤的原因是因為,document.getElementById方法返回的類型為HTMLElement | null ,并且value屬性不存在于HTMLElement類型上。

類型斷言

為了解決該錯誤,使用類型斷言將元素類型斷言為HTMLInputElement(或者HTMLTextAreaElement,如果你使用textarea元素鍵入)。

import {useEffect} from 'react';
export default function App() {
  useEffect(() => {
    // ? type element as HTMLInputElement
    const input = document.getElementById('message') as HTMLInputElement;
    console.log(input?.value); // ??? "Initial value"
  }, []);
  return (
    <div>
      <input id="message" defaultValue="Initial value" />
    </div>
  );
}

你也可以在內聯(lián)中使用一個類型斷言,就在訪問值屬性之前。

// App.tsx
import {useEffect} from 'react';
export default function App() {
  useEffect(() => {
    // ??? inline type assertion
    const value = (document.getElementById('message') as HTMLInputElement).value;
    console.log(value);
  }, []);
  return (
    <div>
      <input id="message" defaultValue="Initial value" />
    </div>
  );
}

當我們擁有一個值的類型信息,但是TypeScript無從得知時,就會使用類型斷言。

我們有效地告訴TypeScript,input變量存儲了一個HTMLInputElement,不用擔心它。

如果你正在使用一個textarea元素,你將使用HTMLTextAreaElement類型來代替。

聯(lián)合類型

如果你想更精確地控制類型,你可以使用一個聯(lián)合類型來設置類型為HTMLInputElement | null

// App.tsx
import {useEffect} from 'react';
export default function App() {
  useEffect(() => {
    // ? type element as HTMLInputElement | null
    const input = document.getElementById('message') as HTMLInputElement | null;
    console.log(input?.value); // ??? "Initial value"
  }, []);
  return (
    <div>
      <input id="message" defaultValue="Initial value" />
    </div>
  );
}

HTMLInputElement | null類型是正確的,因為如果提供id的元素不存在于DOM中,document.getElementById()方法就會返回一個null值。

需要注意的是,我們使用了可選鏈(?.)操作符來短路運算,如果引用是空值的話(null或者undefined)。

換句話說,如果input變量存儲了一個null值,我們就不會試圖訪問null的屬性,而得到一個運行時錯誤。

類型守衛(wèi)

你也可以使用一個簡單的if語句作為類型守衛(wèi),以確保input變量不存儲一個null值。

// App.tsx
import {useEffect} from 'react';
export default function App() {
  useEffect(() => {
    const input = document.getElementById('message') as HTMLInputElement | null;
    if (input != null) {
      console.log(input.value); // ??? "Initial value"
    }
  }, []);
  return (
    <div>
      <input id="message" defaultValue="Initial value" />
    </div>
  );
}

TypeScript知道input變量在if塊中的類型是HTMLInputElement,并允許我們直接訪問其value屬性。

在類型斷言中包含null總是一種最佳實踐,因為如果沒有找到所提供的id的元素,getElementById方法將返回null

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

以上就是解決React報錯Property value does not exist on type HTMLElement的詳細內容,更多關于React 報錯解決的資料請關注腳本之家其它相關文章!

相關文章

  • 解析React?ref?命令代替父子組件的數(shù)據(jù)傳遞問題

    解析React?ref?命令代替父子組件的數(shù)據(jù)傳遞問題

    這篇文章主要介紹了React?-?ref?命令為什么代替父子組件的數(shù)據(jù)傳遞,使用?ref?之后,我們不需要再進行頻繁的父子傳遞了,子組件也可以有自己的私有狀態(tài)并且不會影響信息的正常需求,這是為什么呢?因為我們使用了?ref?命令的話,ref是可以進行狀態(tài)的傳輸
    2022-08-08
  • 淺談React 中的淺比較是如何工作的

    淺談React 中的淺比較是如何工作的

    React 中淺比較的概念無處不在,它在不同的流程中起著關鍵的作用,本文主要介紹了React 中的淺比較是如何工作的,具有一定的參考價值,感興趣的可以了解一下
    2022-04-04
  • React通過useContext特性實現(xiàn)組件數(shù)據(jù)傳遞

    React通過useContext特性實現(xiàn)組件數(shù)據(jù)傳遞

    本文主要介紹了React如何通過useContext特性實現(xiàn)組件數(shù)據(jù)傳遞,文中有相關的代碼示例供大家參考,對我們學習React有一定的幫助,需要的朋友可以參考下
    2023-06-06
  • React組件內事件傳參實現(xiàn)tab切換的示例代碼

    React組件內事件傳參實現(xiàn)tab切換的示例代碼

    本篇文章主要介紹了React組件內事件傳參實現(xiàn)tab切換的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • React-Native 橋接iOS原生開發(fā)詳解

    React-Native 橋接iOS原生開發(fā)詳解

    本篇文章主要介紹了React-Native 橋接iOS原生開發(fā)詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • ahooks封裝cookie?localStorage?sessionStorage方法

    ahooks封裝cookie?localStorage?sessionStorage方法

    這篇文章主要為大家介紹了ahooks封裝cookie?localStorage?sessionStorage的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • React實現(xiàn)隨機顏色選擇器的示例代碼

    React實現(xiàn)隨機顏色選擇器的示例代碼

    顏色選擇器是一個用于選擇和調整顏色的工具,它可以讓用戶選擇他們喜歡的顏色,本文主要介紹了React實現(xiàn)隨機顏色選擇器的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • React使用Props實現(xiàn)父組件向子組件傳值

    React使用Props實現(xiàn)父組件向子組件傳值

    在React中,組件之間的數(shù)據(jù)傳遞通常是通過屬性(Props)來實現(xiàn)的,父組件可以通過屬性向子組件傳遞數(shù)據(jù),這是React組件通信的基礎模式之一,本文將探討如何使用Props來實現(xiàn)父組件向子組件傳遞數(shù)據(jù),需要的朋友可以參考下
    2025-04-04
  • React中常見的TypeScript定義實戰(zhàn)教程

    React中常見的TypeScript定義實戰(zhàn)教程

    這篇文章主要介紹了React中常見的TypeScript定義實戰(zhàn),本文介紹了Fiber結構,F(xiàn)iber的生成過程,調和過程,以及 render 和 commit 兩大階段,需要的朋友可以參考下
    2022-10-10
  • React如何使用錯誤邊界(Error Boundaries)捕獲組件錯誤

    React如何使用錯誤邊界(Error Boundaries)捕獲組件錯誤

    在 React 里,錯誤邊界就像是一個“小衛(wèi)士”,專門負責在組件出現(xiàn)錯誤時挺身而出,避免整個應用因為一個小錯誤就崩潰掉,下面小編就來為大家介紹一下如何利用它捕獲組件錯誤吧
    2025-03-03

最新評論

托里县| 尖扎县| 潞城市| 万宁市| 潜江市| 夏邑县| 客服| 永城市| 雷山县| 汉沽区| 北宁市| 兴安县| 拜城县| 陈巴尔虎旗| 晋江市| 台前县| 子洲县| 惠东县| 泸州市| 岑溪市| 石狮市| 佛学| 子洲县| 浦县| 红安县| 余江县| 新昌县| 衢州市| 库尔勒市| 泗洪县| 丰宁| 综艺| 眉山市| 娱乐| 青海省| 喜德县| 调兵山市| 东莞市| 大姚县| 永和县| 浦江县|