import { Result as AntdResult, ResultProps, ConfigProvider } from 'antd'; import React, { useContext, useMemo } from 'react'; import classNames from 'classnames'; import { RESULT_ASSETS } from './assets'; import './index.less'; import { translate } from '../utils'; const Prefix = 'btri-result'; const ICON = RESULT_ASSETS; const PAGE_STATUSES = ['403', '404', '500'] as const; const title: Record<(typeof PAGE_STATUSES)[number], string> = { 403: '403', 404: '404', 500: '500', }; function Result(props: ResultProps) { const { locale } = useContext(ConfigProvider.ConfigContext); const subTitle: Record<(typeof PAGE_STATUSES)[number], string> = { 403: translate( 'packages.base.src.Result.index.对不起您暂时没有访问权限', locale.locale, ), 404: translate( 'packages.base.src.Result.index.抱歉您访问的页面不存在', locale.locale, ), 500: translate( 'packages.base.src.Result.index.抱歉服务器出错了', locale.locale, ), }; // 为了与 antd 的生态保持兼容性,我们要求必须要使用 `.@{ant-prefix}` 变量来生成类名 const { getPrefixCls } = useContext(ConfigProvider.ConfigContext); const prefixCls = getPrefixCls(Prefix); const { status = 'info', icon } = props; const defaultIcon = useMemo(() => { const src = ICON[status as keyof typeof ICON]; if (!src) { return null; } const isPageStatus = PAGE_STATUSES.includes( status as (typeof PAGE_STATUSES)[number], ); return ( ); }, [status]); const isPageStatus = PAGE_STATUSES.includes( status as (typeof PAGE_STATUSES)[number], ); return ( ); } export { Result };