当前位置: 首页 > wzjs >正文

龙岩网站建设论坛网站建设哪家公司好

龙岩网站建设论坛,网站建设哪家公司好,公司经营范围有哪些,做网站手机端不做PC可以吗目录 1. 错误边界(Error Boundaries)使用场景写法(类组件方式):componentDidCatch 2. 事件处理器中的错误3. 异步函数中的错误(如 fetch、Promise)4. 全局未捕获错误(适用于整个 Rea…

目录

  • 1. 错误边界(Error Boundaries)
    • 使用场景
    • 写法(类组件方式):componentDidCatch
  • 2. 事件处理器中的错误
  • 3. 异步函数中的错误(如 fetch、Promise)
  • 4. 全局未捕获错误(适用于整个 React 应用)
  • 5. 在函数组件中实现错误边界

在 HOW - Vue Error Catch 机制和错误拦截工具实现 我们介绍过 Vue Catch Error 机制,今天我们主要介绍 React。

React 的错误处理机制,主要是通过 错误边界(Error Boundaries) 来捕获并处理组件树中的错误,确保不会导致整个应用崩溃。

1. 错误边界(Error Boundaries)

错误边界是一个特殊的 React 组件,它可以捕获其 子组件树 中发生的 JavaScript 错误,并显示回退 UI,而不是整个应用崩溃。

使用场景

  • 渲染过程中的错误
  • 生命周期方法中的错误
  • 构造函数中的错误

不能捕获:

  • 事件处理器中的错误
  • 异步代码(比如 setTimeout、Promise)
  • 服务端渲染错误
  • 错误边界本身抛出的错误

写法(类组件方式):componentDidCatch

class ErrorBoundary extends React.Component {state = { hasError: false }static getDerivedStateFromError(error: Error) {return { hasError: true }}componentDidCatch(error: Error, info: React.ErrorInfo) {console.error("错误边界捕获:", error, info)// 你也可以上报错误日志到服务端}render() {if (this.state.hasError) {return <h2>出错了,请稍后再试。</h2>}return this.props.children}
}

使用:

<ErrorBoundary><MyComponent />
</ErrorBoundary>

第三方工具推荐:WHAT - React 错误边界处理 - react-error-boundary

2. 事件处理器中的错误

React 不会自动捕获事件处理器的错误,需自己 try/catch

<button onClick={() => {try {throw new Error('点击错误')} catch (err) {console.error('事件错误:', err)}
}}>点击我
</button>

3. 异步函数中的错误(如 fetch、Promise)

也需要手动 try/catch 或使用 .catch()

useEffect(() => {const fetchData = async () => {try {await someAsyncFn()} catch (err) {console.error('异步错误:', err)}}fetchData()
}, [])

4. 全局未捕获错误(适用于整个 React 应用)

你可以在根组件挂载时添加原生 JS 错误监听:

useEffect(() => {window.onerror = function (msg, url, line, col, error) {console.error('全局 JS 错误:', error)}window.addEventListener('unhandledrejection', event => {console.error('未处理的 Promise:', event.reason)})
}, [])

5. 在函数组件中实现错误边界

React 暂不支持函数组件作为错误边界。你仍需使用类组件来包裹你的函数组件。

不过社区有一些 workaround,比如使用 react-error-boundary 这个库,它封装了更易用的函数式接口。

http://www.dtcms.com/wzjs/225288.html

相关文章:

  • 商务酒店设计网站建设腾讯企点app下载安装
  • 网站建设 前后台目录结构营销qq
  • 自己做的网站和ie不兼容quark搜索引擎入口
  • 青岛seo百科google seo 优化招聘
  • 免费开源企业网站网络营销的推广方法有哪些
  • 专业手机网站建设如何优化关键词的方法
  • 做外贸网站哪家的好肇庆疫情最新情况
  • 企业公司如何做网站武汉刚刚突然宣布
  • 做软件公司网站社会化媒体营销
  • 柳州做网站设计的公司推广普通话绘画
  • 客户管理系统admin郑州网站seo推广
  • 内容分发网络CDN可以建设网站吗排名优化公司口碑哪家好
  • 帮人做彩票网站建网站专业
  • 编写网站的语言有哪些快速收录工具
  • 站长工具无忧湖南企业竞价优化公司
  • 只用django做网站西安seo优化顾问
  • 关于网站开发网页上传和网站发布常见的线下推广渠道有哪些
  • 网站建设公司问答营销案例外链发布软件
  • 网页设计入门与应用益阳网站seo
  • linux网站建设技术指南 pdf互联网广告投放代理公司
  • wordpress文章末尾插件seo优化培训机构
  • 网站建设有利点西安网站关键词排名
  • 创业做app哪个网站好指数平台
  • 厦门网站建设公司电话中层管理者培训课程有哪些
  • wordpress能不能做管理系统网站推广优化网址
  • 网站视频弹窗广告代码如何营销
  • 有哪些做公司网站永久免费制作网页
  • 网站备份网站上海培训机构排名
  • 建站必须要域名吗百度推广按效果付费是多少钱
  • 医院网站建设 利法拉网络网站的推广方式有哪些