美文网首页
QueueAnim动态效果

QueueAnim动态效果

作者: 壹豪 | 来源:发表于2018-07-27 18:27 被阅读0次

           QueueAnime动态效果组件,默认动画时间是450ms,如果在450ms动画内连续删除,那么被连续删除的组件再次呈现时不会呈现动态效果,因此要做一个定时器,使得删除时间要大于duration属性时间 (默认是450ms)


    /**点击增加查询和删除查询事件的定时器time**/
    let time1 = 0;
    let time2 = 0;
    
    /**全局提示*start*/
    const infoTop = '条件已达上限!';
    const infoButtom = '不能再删了!';
    /**全局提示*end*/
    
    /**主组件*start*/
    export default class App extends React.Component {
        constructor(props) {
            super(props);
            this.state = {
            /**num是当前选择的输入框div**/
            num: 0,
            /**show决定输入框是否显示**/
            show: [false, false, false, false],
            }
    
        /**删除按钮点击事件  **start**/
        btnClick = () => {
            /**设定计时器以免删除过快导致特效无法再次显示**/
            if (time1 === 0) {
                time1 = 1; //设定间隔时间(秒)
                /**点击删除方法 *start*/
                let show = this.state.show;
                let num = this.state.num;
                if (num < 1) {
                    message.info(infoButtom);
                }
                else {
                    show[num - 1] = !this.state.show[num - 1];
                    this.setState({
                        show: show,
                        num: num - 1,
                    })
                }
                /**点击删除方法 *end*/
                    //启动计时器,倒计时time秒后自动关闭计时器。
                    //在此时间内再次点击无效
                let index = setInterval(()=>{
                        time1--;
                        if (time1 === 0) {
                            clearInterval(index);
                        }
                    }, 350);
            }
        }
        /**删除按钮点击事件  **end**/
    
        /**Button点击事件,让第二到第八个输入框依次显示  **start**/
        handleClick = () => {
            /**设定计时器以和删除事件配合**/
            if (time2 === 0) {
                time2 = 1; //设定间隔时间(秒)
                /**点击增加方法 *start*/
                let show = this.state.show;
                let num = this.state.num;
                if (num > 6) {
                    message.info(infoTop);
                }
                else {
                    show[num] = !this.state.show[num];
                    this.setState({
                        num: num + 1,
                        show: show,
                    })
                }
                /**点击增加方法 *end*/
                    //启动计时器,倒计时time秒后自动关闭计时器。
                    //在此时间内再次点击无效
                let index = setInterval(()=>{
                        time2--;
                        if (time2 === 0) {
                            clearInterval(index);
                        }
    
                    }, 350);
            }
        };
        /**Button点击事件,让第二到第八个输入框依次显示  **end**/
        
        render() {
            return (
            <QueueAnim className="demo-content" duration={350}>
                {/**show的值为true时显示MulSelect,为false时显示null,初始为false,受button控制**/}
                {this.state.show[0]?
                    <button 
                        key="a" 
                        className="btn" 
                        shape="circle" 
                        onClick={this.btnClick}
                    />: null}
                {this.state.show[1]?
                    <button 
                        key="b" 
                        className="btn" 
                        shape="circle" 
                        onClick={this.btnClick}
                    />: null}
                {this.state.show[2]?
                    <button 
                        key="c" 
                        className="btn" 
                        shape="circle" 
                        onClick={this.btnClick}
                    />: null}
                {this.state.show[3]?
                    <button 
                        key="d" 
                        className="btn" 
                        shape="circle" 
                        onClick={this.btnClick}
                    />: null}
                    </QueueAnim>
            <div className="btn">
                {/**button调用handleClick来控制show的值**/}
                <button onClick={this.handleClick}>增加</button>
            </div>
        )}
    }
    

    相关文章

      网友评论

          本文标题:QueueAnim动态效果

          本文链接:https://www.haomeiwen.com/subject/ngigmftx.html