import React from 'react'; import classNames from 'classnames'; import { isCssAnimationSupported } from 'css-animation'; const isBrowser = (typeof document !== 'undefined' && typeof window !== 'undefined'); export default class Spin extends React.Component { static defaultProps = { prefixCls: 'ant-spin', spining: true, } static propTypes = { className: React.PropTypes.string, size: React.PropTypes.oneOf(['small', 'default', 'large']), } isNestedPattern() { return !!(this.props && this.props.children); } render() { const { className, size, prefixCls, tip } = this.props; let spinClassName = classNames({ [prefixCls]: true, [`${prefixCls}-sm`]: size === 'small', [`${prefixCls}-lg`]: size === 'large', [className]: !!className, [`${prefixCls}-spining`]: this.props.spining, }); let spinElement; if (!isBrowser || !isCssAnimationSupported || 'tip' in this.props) { // not support for animation, just use text instead spinElement =
{tip || '加载中...'}
; } else { spinElement = (
); } if (this.isNestedPattern()) { return (
{spinElement}
{this.props.children}
); } return spinElement; } }