mirror of https://github.com/chillzhuang/Sword
62 lines
1.5 KiB
JavaScript
62 lines
1.5 KiB
JavaScript
import React, { createElement } from 'react';
|
|
import classNames from 'classnames';
|
|
import { Button } from 'antd';
|
|
import config from './typeConfig';
|
|
import styles from './index.less';
|
|
|
|
class Exception extends React.PureComponent {
|
|
static defaultProps = {
|
|
backText: 'back to home',
|
|
redirect: '/',
|
|
};
|
|
|
|
constructor(props) {
|
|
super(props);
|
|
this.state = {};
|
|
}
|
|
|
|
render() {
|
|
const {
|
|
className,
|
|
backText,
|
|
linkElement = 'a',
|
|
type,
|
|
title,
|
|
desc,
|
|
img,
|
|
actions,
|
|
redirect,
|
|
...rest
|
|
} = this.props;
|
|
const pageType = type in config ? type : '404';
|
|
const clsString = classNames(styles.exception, className);
|
|
return (
|
|
<div className={clsString} {...rest}>
|
|
<div className={styles.imgBlock}>
|
|
<div
|
|
className={styles.imgEle}
|
|
style={{ backgroundImage: `url(${img || config[pageType].img})` }}
|
|
/>
|
|
</div>
|
|
<div className={styles.content}>
|
|
<h1>{title || config[pageType].title}</h1>
|
|
<div className={styles.desc}>{desc || config[pageType].desc}</div>
|
|
<div className={styles.actions}>
|
|
{actions ||
|
|
createElement(
|
|
linkElement,
|
|
{
|
|
to: redirect,
|
|
href: redirect,
|
|
},
|
|
<Button type="primary">{backText}</Button>
|
|
)}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|
|
}
|
|
|
|
export default Exception;
|