关于react hook接入埋点缺少生命周期的解决方案

react16以后,官方为class类组件添加了componentDidCatch 获取异常信息的生命周期。
然而,react hook这类函数式组件却还没有。
在这里插入图片描述
那么,如何为react hook函数式组件捕获异常信息实现埋点呢?

方法一

自己手动实现try catch,但是官方不推荐如此

方法二

引入第三方边界捕获插件容器,例如react-error-boundary

npm install --save react-error-boundary

https://www.npmjs.com/package/use-error-boundary#breaking-changes-in-2x

方法三(博主推荐做法)

为最上层容器组件(例如antdpro的BasicLayout)的return dom的props.children包裹一层ErrorBoundaryContainerclass容器组件(该组件由我们自行实现)

import React, { Component } from 'react';
import cookie from 'react-cookies';

class ErrorBoundaryContainer extends React.Component {
	constructor(props) {
		super(props);
		this.state = {
			// hasError: false,
		};
	}

	componentDidCatch(error, info) {
		console.warn('componentDidCatch error, info====>', '----' + error + '----', info);
		// this.setState({ hasError: true });
		// TODO:底下这行代码上报埋点信息 根据自己的情况来改
		window.mmjWebtrack && window.mmjWebtrack.updateTrackError && window.mmjWebtrack.updateTrackError({ message: error, info });
	}

	render() {
		// if (this.state.hasError) return <p>halo,出现了未知的错误!</p >
		return (
			<React.Fragment>
				{this.props.children}
			</React.Fragment>
		);
	}
}

export default ErrorBoundaryContainer;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hzxOnlineOk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值