vue的事件监听,vue中监听事件

  vue的事件监听,vue中监听事件

  本文主要介绍前端项目中的Vue和React错误监控。文章重点介绍了题目的相关信息,并介绍了所需的伙伴以供参考。

  

目录

   I. Vue错误监控窗口. onerrorerrorCaptured生命周期错误处理程序异步错误答案扩展II。反应错误监控错误边界开发和建立事件报告错误异步错误应答扩展

  

一、 Vue 错误监听

  题目:

  如何统一监控Vue组件上报的错误?

  分析:

  真实项目需要闭环,就是考虑方方面面,除了基本功能,性能优化,报错,统计等。但是个别项目和课程项目一般以实现功能为主,不会考虑的那么全面。所以没有实际工作经验的同学不会有这么全面的认识。

  

window.onerror

  您可以在当前页面上监控所有JS错误,这在jQuery时代经常使用。

  请注意,全局绑定只能进行一次。不要放在多次渲染的组件里,这样很容易多次绑定。

  window.onerror=function(消息,源,行,列,错误){

  console.log(window.onerror -,消息,源,行,列,错误)

  }

  //注意如果用window.addEventListener (error ,event={})参数就不一样了!

  

errorCaptured 生命周期

  将监听所有下级组件错误。您可以返回false来防止向上传播,因为可能有多个上级节点在侦听错误。

  错误捕获(错误,实例,信息){

  console.log(errorCaptured -,错误,实例,信息)

  }

  

errorHandler

  全局错误监控,所有组件的错误将在此汇总。PS:不会如果errorCaptured返回false。

  const app=createApp(App)

  app.config.errorHandler=(错误,实例,信息)={

  console.log(errorHandler -,错误,实例,信息)

  }

  请注意,errorHandler将阻止错误进入window.onerror

  PS:和警告处理程序

  

异步错误

  无法听到组件中的异步错误errorHandler,或者需要window.onerror。

  已安装(){

  setTimeout(()={

  抛出新错误(“setTimeout错误”)

  }, 1000)

  },

  

答案

  方法

  ErrorCaptured监视从属组件的错误,并且可以返回false以防止向上传播。errorHandler监视Vue全局错误。On Error监控其他JS错误,比如异步建议:组合使用。

  对于一些重要的、复杂的和有风险的组件,可以使用errorCaptured作为关键监视器,然后使用errorHandlerwindow.onerror作为备用全局监视器,以避免出现意外情况。

  

扩展

  当Promise侦听错误时,使用window.onunhandledrejection。

  得到前端错误监控后,需要传递给服务器进行错误收集和分析,然后进行bug修复。后面会有一个面试问题。

  

二、React 错误监听

  题目:

  如何监控React组件的错误?

  分析:

  真实项目需要闭环,就是考虑方方面面,除了基本功能,性能优化,报错,统计等。

  

ErrorBoundary

  React 16介绍。您可以监控所有下级组件的错误,并降低用户界面。

  请参见代码ErrorBoundary.js和components/ErrorDemo。

  从“react”导入React

  类错误边界扩展反应。组件{

  施工员(道具){

  超级(道具)

  this.state={

  错误:null //存储当前错误信息。

  }

  }

  静态getDerivedStateFromError(错误){

  //更新状态,以便下一次呈现可以显示降级的UI

  console . info( getderivedstatefromrerror . ,错误)

  返回{错误}

  }

  componentDidCatch(错误,错误信息){

  //统计上报的错误信息。

  console . info( componentDidCatch . ,错误,错误信息)

  }

  render() {

  if (this.state.error) {

  //提示错误

  返回h1报告了一个错误/h1

  }

  //如果没有错误,则呈现子组件。

  归还这个。道具。孩子们

  }

  }

  导出默认误差边界

  功能演示. js

  从“react”导入{ useState,useEffect }

  函数错误演示(){

  const [num]=useState(100)

  函数clickHandler() {

  Num() //ErrorBoundary无法监听事件,需要自己尝试-catch。

  }

  useEffect(()={

  //ThrowNewError( Mounted Error )//Error boundary可以侦听呈现过程中的错误。

  }, [])

  退货部门

  perror演示-功能/p

  button onClick={ clickHandler }错误/button

  /div

  }

  导出默认错误演示

  建议应用到顶层来监听全局错误。

  //index.js条目文件

  ReactDOM.render(

  做出反应。严格模式

  误差边界

  App /

  /错误边界

  /反应过来。严格模式,

  document.getElementById(root )

  );

  也可以用在函数组件中。

  功能应用(道具){

  返回误差边界

  {道具.儿童}

  /错误边界

  }

  

dev 和 build

  在开发环境中看不到ErrorBoundary的错误UI效果。将显示一条错误消息。Yarn构建然后运行,可以看到UI效果。

  

事件报错

  React不需要ErrorBoundary来捕捉事件处理程序中的错误。与render方法和lifecycle方法不同,事件处理程序在呈现期间不会被触发。

  如果需要捕捉事件处理程序内部的错误,请使用普通的try-catch语句。也可以使用全局window.onerror来监听。

  

异步错误

  ErrorBoundary无法捕获异步错误,可以使用window.onerror进行监控。

  window.onerror=function(消息,源,行,列,错误){

  console.log(window.onerror -,消息,源,行,列,错误)

  }

  //注意如果用window.addEventListener (error ,event={})参数就不一样了!

  

答案

  错误边界在侦听渲染时报告了错误。try-catch和window.onerror捕获了其他错误

扩展

  当Promise侦听错误时,使用window.onunhandledrejection。

  得到前端错误监控后,需要传递给服务器进行错误收集和分析,然后进行bug修复。

  关于前端项目中的Vue和React错误监控的这篇文章到此结束。有关Vue和React错误监控的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: