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

React錯(cuò)誤邊界Error Boundaries

 更新時(shí)間:2023年01月29日 11:30:02   作者:-耿瑞-  
錯(cuò)誤邊界是一種React組件,這種組件可以捕獲發(fā)生在其子組件樹(shù)任何位置的JavaScript錯(cuò)誤,并打印這些錯(cuò)誤,同時(shí)展示降級(jí)UI,而并不會(huì)渲染那些發(fā)生崩潰的子組件樹(shù)

首先 我們先構(gòu)建出問(wèn)題的場(chǎng)景

我們創(chuàng)建一個(gè)react項(xiàng)目

然后在src下創(chuàng)建 components 文件夾目錄

在下面創(chuàng)建一個(gè) error.jsx 組件

參開(kāi)代碼如下

import React from "react";
export default class App extends React.Component{
  constructor(props){
    super(props);
    this.state = {
    }
  }
  render(){
    return (
      <div>
          { null.bingt }
      </div>
    )
  }
}

這時(shí) 就會(huì)有人說(shuō)了 你這 null.bingt 不是擺明會(huì)報(bào)錯(cuò)嗎?

沒(méi)錯(cuò) 我們要的就是報(bào)錯(cuò)

找到src下的 App.js 編寫代碼如下

import './App.css';
import React from "react";
import Error from "./components/error";
export default class App extends React.Component{
  constructor(props){
    super(props);
    this.state = {
    }
  }
  render(){
    return (
      <div>
          <span>你好</span>
          <Error/>
      </div>
    )
  }
}

運(yùn)行之后 控制臺(tái)直接報(bào)錯(cuò) 界面白屏 但其實(shí) App組件上還有個(gè)你好啊 說(shuō)明 整個(gè)項(xiàng)目都沒(méi)渲染出來(lái)

直接白屏 版本低一點(diǎn)的react還會(huì)出現(xiàn)報(bào)錯(cuò)的專門的界面 但在上線之后 客戶看到的就是一片空白

但我們想 因?yàn)橐粋€(gè)組件報(bào)錯(cuò) 導(dǎo)致整個(gè)項(xiàng)目都運(yùn)行不起來(lái) 這合理嗎?

顯然是不合理的

此時(shí) 我們可以在 components 目錄下創(chuàng)建 ErrorBoundary.jsx組件

參考代碼如下

import React from "react"
export default class ErrorBoundary extends React.Component{
    state = {
        hasError:false,
        error:null,
        errorInfo:null
    }
    componentDidCatch(error,errorInfo){
        this.setState({
            hasError:true,
            error:error,
            errorInfo:errorInfo
        })
    }
    render(){
        if(this.state.hasError){
            return <div>{ this.props.render(this.state.error,this.state.errorInfo) }</div>
        }
        return this.props.children;
    }
}

此時(shí) 我們的一個(gè)捕獲錯(cuò)誤的組件就寫好了

然后 改寫 src下的 App.js

代碼如下

import './App.css';
import React from "react";
import Error from "./components/error";
import ErrorBoundary from "./components/ErrorBoundary";
export default class App extends React.Component{
  constructor(props){
    super(props);
    this.state = {
    }
  }
  render(){
    return (
      <div>
          <span>你好</span>
          <ErrorBoundary render ={ (error,errorInfo) => <p>{ '加載時(shí)發(fā)生錯(cuò)誤' }</p>}>
              <Error/>
          </ErrorBoundary>
      </div>
    )
  }
}

此時(shí) 我們將ErrorBoundary捕獲報(bào)錯(cuò)的組件 套在了Error外面

然后 編寫 當(dāng)報(bào)錯(cuò)時(shí) 就渲染

{ ‘加載時(shí)發(fā)生錯(cuò)誤’ }

運(yùn)行結(jié)果如下

控制臺(tái)依舊會(huì)輸出報(bào)錯(cuò)信息 但 將不會(huì)運(yùn)行到其他組件的渲染 而且 我們指定報(bào)錯(cuò)后 渲染的

{ ‘加載時(shí)發(fā)生錯(cuò)誤’ }

也成功渲染出來(lái)了

就是 之后我們指定可能某個(gè)組件 會(huì)報(bào)錯(cuò) 就可以用這個(gè)組件套一下 避免一個(gè)組件報(bào)錯(cuò) 整個(gè)項(xiàng)目白屏的情況

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

相關(guān)文章

  • React渲染機(jī)制超詳細(xì)講解

    React渲染機(jī)制超詳細(xì)講解

    React整個(gè)的渲染機(jī)制就是React會(huì)調(diào)用render()函數(shù)構(gòu)建一棵Dom樹(shù),在state/props發(fā)生改變的時(shí)候,render()函數(shù)會(huì)被再次調(diào)用渲染出另外一棵樹(shù),重新渲染所有的節(jié)點(diǎn),構(gòu)造出新的虛擬Dom tree
    2022-11-11
  • React手寫簽名組件react-signature實(shí)現(xiàn)簽字demo

    React手寫簽名組件react-signature實(shí)現(xiàn)簽字demo

    這篇文章主要為大家介紹了React手寫簽名組件react-signature實(shí)現(xiàn)簽字demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • react進(jìn)階教程之異常處理機(jī)制error?Boundaries

    react進(jìn)階教程之異常處理機(jī)制error?Boundaries

    在react中一旦出錯(cuò),如果每個(gè)組件去處理出錯(cuò)情況則比較麻煩,下面這篇文章主要給大家介紹了關(guān)于react進(jìn)階教程之異常處理機(jī)制error?Boundaries的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • 字節(jié)封裝React組件手機(jī)號(hào)自動(dòng)校驗(yàn)格式FormItem

    字節(jié)封裝React組件手機(jī)號(hào)自動(dòng)校驗(yàn)格式FormItem

    這篇文章主要為大家介紹了字節(jié)封裝React組件手機(jī)號(hào)自動(dòng)校驗(yàn)格式FormItem,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • React項(xiàng)目中服務(wù)器端渲染SSR的實(shí)現(xiàn)與優(yōu)化詳解

    React項(xiàng)目中服務(wù)器端渲染SSR的實(shí)現(xiàn)與優(yōu)化詳解

    在傳統(tǒng)的 React 項(xiàng)目里,頁(yè)面的渲染工作是在瀏覽器里完成的,而服務(wù)器端渲染(SSR)則是讓服務(wù)器先把 React 組件渲染成 HTML 字符串,再把這個(gè) HTML 字符串發(fā)送給瀏覽器,下面我們就來(lái)看看具體實(shí)現(xiàn)方法吧
    2025-03-03
  • React Native 中添加自定義字體的方法

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

    這篇文章主要介紹了如何在 React Native 中添加自定義字體,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • React組件化學(xué)習(xí)入門教程講解

    React組件化學(xué)習(xí)入門教程講解

    React是現(xiàn)在前端使用頻率最高的三大框架之一,React率先提出虛擬DOM的思想和實(shí)現(xiàn),使其保持有良好的性能。本篇文章將對(duì)React組件化的入門學(xué)習(xí)進(jìn)行講解,同時(shí)針對(duì)模塊化的思想進(jìn)行概述,為接下來(lái)組件化開(kāi)發(fā)的文章進(jìn)行知識(shí)儲(chǔ)備
    2022-09-09
  • 如何使用 React Native WebView 實(shí)現(xiàn) App 與 Web 的通訊

    如何使用 React Native WebView 實(shí)現(xiàn) App&nb

    通過(guò) react-native-webview,我們可以輕松實(shí)現(xiàn) App 與 Web 的雙向通訊,這種技術(shù)非常適合需要在移動(dòng)應(yīng)用中嵌入復(fù)雜網(wǎng)頁(yè)功能的場(chǎng)景,感興趣的朋友一起看看吧
    2024-12-12
  • React 實(shí)現(xiàn)表單組件的示例代碼

    React 實(shí)現(xiàn)表單組件的示例代碼

    本文主要介紹了React 實(shí)現(xiàn)表單組件的示例代碼,支持包括輸入狀態(tài)管理,表單驗(yàn)證,錯(cuò)誤信息展示,表單提交,動(dòng)態(tài)表單元素等功能,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • create-react-app修改為多頁(yè)面支持的方法

    create-react-app修改為多頁(yè)面支持的方法

    本篇文章主要介紹了create-react-app修改為多頁(yè)面支持的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05

最新評(píng)論

河北区| 安阳市| 德阳市| 胶南市| 黄山市| 三江| 西宁市| 来凤县| 乌兰察布市| 资源县| 长泰县| 同德县| 宁波市| 塔城市| 安溪县| 丽江市| 镇原县| 河北区| 湾仔区| 阿克苏市| 海口市| 洛扎县| 九龙城区| 西乌| 桓仁| 会宁县| 尖扎县| 襄樊市| 武义县| 乌拉特中旗| 寻甸| 布拖县| 南漳县| 类乌齐县| 商南县| 乳山市| 元朗区| 安福县| 浪卡子县| 寿阳县| 咸宁市|