错误边界组件

export const UliveErrorBoundary = (props: ErrorBoundaryProps) => {
  const { onError, fallbackRender, children, componentName } = props;

  const handleError = useCallback(
    (error, info) => {
      let errorStr = '';
      if (error) {
        if (typeof error === 'string') {
          errorStr = error;
        } else {
          errorStr = error?.toString?.() || safeStringify(error);
        }
      }
      const msgStr = safeStringify({
        errorStr,
        compoment: isProduction ? children : null,
      });

      wpk.report({
        category: 123, // 系统自动生成,请勿修改
        msg: componentName, // 将根据msg字段聚合展示在平台的top上报内容中
        c1: errorStr?.startsWith('ChunkLoadError') ? 'ChunkLoadError' : 'ComponentError',
        c2: error?.message,
        bl1: msgStr,
        bl2: error?.stack,
      });
      console.error(error);
      onError && onError(error, info);
    },
    [onError],
  );

  return (
    <ErrorBoundary
      fallback={
        <CommonFallbackRender
          name={componentName}
          fallbackRender={fallbackRender}
        ></CommonFallbackRender>
      }
      onError={handleError}
    >
      {children}
    </ErrorBoundary>
  );
};

// 使用
<UliveErrorBoundary componentName="DragonSlayerEntryFirst">
      <Card {...props} lotteryIndex={0} />
    </UliveErrorBoundary>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值