diff --git a/components/spin/index.jsx b/components/spin/index.jsx index 2b5c6ac81e..845221f498 100644 --- a/components/spin/index.jsx +++ b/components/spin/index.jsx @@ -8,8 +8,15 @@ export default class Spin extends React.Component { static defaultProps = { prefixCls: 'ant-spin', spinning: true, + debounce: 0, } + constructor(props) { + super(props); + this.state = { + spinning: props.spinning || props.spining, + }; + } static propTypes = { className: React.PropTypes.string, size: React.PropTypes.oneOf(['small', 'default', 'large']), @@ -26,10 +33,21 @@ export default class Spin extends React.Component { findDOMNode(this).className += ` ${this.props.prefixCls}-show-text`; } } - - render() { - const { className, size, prefixCls, tip, spining = true } = this.props; + componentWillReceiveProps(nextProps) { + const { spining = true, debounce } = nextProps; const spinning = this.props.spinning && spining; // Backwards support + if (this.debounceTimeout) { + clearTimeout(this.debounceTimeout); + } + if (debounce && spinning) { + this.debounceTimeout = setTimeout(() => this.setState({ spinning }), debounce); + } else { + this.setState({ spinning }); + } + } + render() { + const { className, size, prefixCls, tip } = this.props; + const { spinning } = this.state; const spinClassName = classNames({ [prefixCls]: true, diff --git a/components/spin/index.md b/components/spin/index.md index 6220ab09ef..22d6ce112b 100644 --- a/components/spin/index.md +++ b/components/spin/index.md @@ -20,3 +20,4 @@ english: Spin | size | enum | default | spin组件中点的大小,可选值为 small default large | | spinning | boolean | true | 用于内嵌其他组件的模式,可以关闭 loading 效果 | | tip | string | 无 | 自定义描述文案 | +| debounce | number | 0 | 毫秒,用于设定去抖动的 debounce 值。|