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

React錯(cuò)誤邊界Error Boundaries詳解

 更新時(shí)間:2022年12月03日 11:02:39   作者:碼農(nóng)小菲  
錯(cuò)誤邊界是一種React組件,這種組件可以捕獲發(fā)生在其子組件樹任何位置的JavaScript錯(cuò)誤,并打印這些錯(cuò)誤,同時(shí)展示降級UI,而并不會渲染那些發(fā)生崩潰的子組件樹

錯(cuò)誤邊界(Error Boundaries)

概述

  • 部分 UI 的 JavaScript 錯(cuò)誤不應(yīng)該導(dǎo)致整個(gè)應(yīng)用崩潰,為了解決這個(gè)問題,React 16 引入了一個(gè)新的概念 —— 錯(cuò)誤邊界。
  • 是React組件,可以捕獲并打印發(fā)生在其子組件樹任何位置的 JavaScript 錯(cuò)誤,并且,它會渲染出備用 UI。錯(cuò)誤邊界在渲染期間、生命周期方法和整個(gè)組件樹的構(gòu)造函數(shù)中捕獲錯(cuò)誤。
  • class組件中才可以使用
  • 錯(cuò)誤邊界僅可以捕獲其子組件的錯(cuò)誤

錯(cuò)誤邊界無法捕獲以下場景中的錯(cuò)誤

  • 事件處理
  • 異步代碼
  • 服務(wù)端渲染
  • 它自身拋出來的錯(cuò)誤(并非它的子組件)

渲染備用UI-static getDerivedStateFromError()

在class組件中使用 static getDerivedStateFromError() 可以渲染備用 UI

static getDerivedStateFromError(error){
   // 更新 state 使下一次渲染能夠顯示降級后的 UI
    return { hasError: true }
}

打印錯(cuò)誤信息-componentDidCatch()

  • 在class組件中使用 cpmponentDidCatch(err,errorInfo) 可以打印錯(cuò)誤信息
  • err:錯(cuò)誤信息; errorInfo:它存儲哪個(gè)組件引發(fā)了此錯(cuò)誤的componentStack跟蹤
componentDidCatch(error,errorInfo){
  // 你同樣可以將錯(cuò)誤日志上報(bào)給服務(wù)器
  logErrorToMyService(error, errorInfo)
}

打印錯(cuò)誤信息并渲染備用UI

class ErrorBoundary extends React.Component {
 constructor(props){
  super(props)
  this.state = { hasError: false} //是否報(bào)錯(cuò)
 }
 static getDeriveStateFromError(error){
   // 更新 state 使下一次渲染能夠顯示降級后的 UI
    return { hasError: true }
 }
 componentDidCatch(error,errorInfo){
  // 你同樣可以將錯(cuò)誤日志上報(bào)給服務(wù)器
  logErrorToMyService(error, errorInfo)
 }
 render(){
   if(this.state.hasError){
     // 自定義降級后的 UI 并渲染
      return <h1>Something went wrong.</h1>;
   }
   return this.props.children; 
 }
}

可以將錯(cuò)誤邊界封裝為一個(gè)組件進(jìn)行使用

<ErrorBoundary>
  <MyWidget />
</ErrorBoundary>
//項(xiàng)目中可以用于包裹在路由外面
 <ErrorBoundary>
  <Suspense fallback={<div >Loading...</div>}>
    ...
    <MyWidget />
  </Suspense>
</ErrorBoundary>

錯(cuò)誤邊界的工作方式類似于 JavaScript 的 catch {},不同的地方在于錯(cuò)誤邊界只針對 React 的class 組件。

錯(cuò)誤邊界應(yīng)該放置在哪?

可以選在最頂層的路由組件并為用戶展示一個(gè)錯(cuò)誤信息

未捕獲錯(cuò)誤(Uncaught Errors)的新行為

自 React 16 起,任何未被錯(cuò)誤邊界捕獲的錯(cuò)誤將會導(dǎo)致整個(gè) React 組件樹被卸載。

到此這篇關(guān)于React錯(cuò)誤邊界Error Boundaries詳解的文章就介紹到這了,更多相關(guān)React錯(cuò)誤邊界內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React通過ref獲取子組件的數(shù)據(jù)和方法

    React通過ref獲取子組件的數(shù)據(jù)和方法

    這篇文章主要介紹了React如何通過ref獲取子組件的數(shù)據(jù)和方法,文中有詳細(xì)的總結(jié)內(nèi)容和代碼示例,具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-10-10
  • 淺談React 服務(wù)器端渲染的使用

    淺談React 服務(wù)器端渲染的使用

    本篇文章主要介紹了淺談React 服務(wù)器端渲染的使用,React是最受歡迎的客戶端 JavaScript 框架,在本教程中,我們將逐步向您介紹服務(wù)器端的渲染示例
    2018-05-05
  • React Hooks的深入理解與使用

    React Hooks的深入理解與使用

    這篇文章主要介紹了React Hooks的深入理解與使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-11-11
  • 淺談react前后端同構(gòu)渲染

    淺談react前后端同構(gòu)渲染

    本篇文章主要介紹了淺談react前后端同構(gòu)渲染,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • react 路由Link配置詳解

    react 路由Link配置詳解

    本文主要介紹了react 路由Link配置詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 詳解React如何實(shí)現(xiàn)代碼分割Code Splitting

    詳解React如何實(shí)現(xiàn)代碼分割Code Splitting

    這篇文章主要為大家介紹了React如何實(shí)現(xiàn)代碼分割Code Splitting示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • React點(diǎn)擊事件的兩種寫法小結(jié)

    React點(diǎn)擊事件的兩種寫法小結(jié)

    這篇文章主要介紹了React點(diǎn)擊事件的兩種寫法小結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。
    2022-12-12
  • 淺談React?Refs?使用場景及核心要點(diǎn)

    淺談React?Refs?使用場景及核心要點(diǎn)

    本文主要介紹了React?Refs?使用場景及核心要點(diǎn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • React?TypeScript?應(yīng)用中便捷使用Redux?Toolkit方法詳解

    React?TypeScript?應(yīng)用中便捷使用Redux?Toolkit方法詳解

    這篇文章主要為大家介紹了React?TypeScript?應(yīng)用中便捷使用Redux?Toolkit方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 在?React?項(xiàng)目中全量使用?Hooks的方法

    在?React?項(xiàng)目中全量使用?Hooks的方法

    這篇文章主要介紹了在?React?項(xiàng)目中全量使用?Hooks,使用 Hooks 能為開發(fā)提升不少效率,但并不代表就要拋棄 Class Component,依舊還有很多場景我們還得用到它,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-10-10

最新評論

内乡县| 小金县| 庆云县| 潮安县| 益阳市| 庐江县| 临清市| 北宁市| 南开区| 都匀市| 都江堰市| 嘉义市| 临武县| 炎陵县| 威海市| 大同县| 濉溪县| 三河市| 巴南区| 武平县| 罗山县| 海林市| 温州市| 南涧| 兴隆县| 丘北县| 墨玉县| 永丰县| 榆树市| 揭阳市| 衡阳市| 南安市| 巴林右旗| 揭西县| 江口县| 琼结县| 根河市| 图木舒克市| 榆树市| 石城县| 海兴县|