Navel Pondering Mantra

    @alicloud/console-base-error-prompt
    TypeScript icon, indicating that this package has built-in type declarations

    1.7.1 • Public • Published

    @alicloud/console-base-error-prompt

    TODO see in action

    @alicloud/error-prompt 的进化版,不再依赖 wind 和 fusion,也不需要手动引样式和指定语言,更不再是一个工厂。

    使用

    一般用法

    import errorPrompt from '@alicloud/console-base-error-prompt';
    
    errorPrompt(error/*, extra*/);

    error 可以是以下类型:

    • undefined | null 将被忽略
    • 字符串
    • JSX
    • plain 对象
    • 扩展了的 Error 实例对象

    如果 error 是对象,除了标准属性 message 之外,可以附加 code、requestId,同时可以有 details 属性,长这样:

    interface IErrorDetails {
      url?: string;
      method?: string;
      params?: string | Record<string, unkonwn>;
      body?: string | Record<string, unkonwn>;
    }

    自定义标题、按钮

    有的时候,会根据 code 可能需要调整 titlebutton

    errorPrompt(error, {
      button,
      title
    });
    
    // 或
    errorPrompt(error, ({ // 这里是解析后的对象,保证存在,但不保证有 code
      code
    }) => {
      if (code === 'ConsoleNeedLogin') {
        return {
          title: '你妹登录 - 需要国际化',
          button: {
            href: '/',
            target: '_blank',
            label: '登录 - 需要国际化'
          }
        };
      }
    });

    如何忽略错误

    所谓「忽略」错误,是指虽然被接收,但不会弹窗。

    虽然可以用 null | undefined,是的,在 JS 中 null | undefined 是可以被当成错误的存在,但这并不是推荐的做法。

    这种场景下,可以利用帮助方法 createErrorToIgnore throw 一个新错误,这个错误一定会被忽略。

    import {
      createErrorToIgnore
    } from '@alicloud/console-base-error-prompt';
    
    try {
      doMyStuff();
    } catch (err) {
      // 可以忽略该错误,或错误在业务层已经被处理
      if (canIgnoreError(err)) {
        throw createErrorToIgnore();
      }
    }

    Install

    npm i @alicloud/console-base-error-prompt

    DownloadsWeekly Downloads

    118

    Version

    1.7.1

    License

    MIT

    Unpacked Size

    85.3 kB

    Total Files

    88

    Last publish

    Collaborators

    • jacksontian
    • fengmk2
    • pagecao
    • aliyunsdkteam
    • console-fe