React 自写Loading

 

 

 

复制代码
import React, {Component} fro'react'
import PropTypes from 'prop-types'
import Animated from 'animated/lib/targets/react-dom'

class Loader extends Component {

    constructor(props) {
        super(props);
        const animate = new Animated.Value(0);
        animate.addListener(this.changeOpacity.bind(this));
        this.state = {
            animate: animate,
            value: 0
        }
    }

    changeOpacity({value}) {
        if (value === 0) this.setState({value: 0});
    }

    componentDidUpdate(prevProps) {
        const {active} = this.props;
        if (!prevProps.active && active) {
            this.state.animate.setValue(0.58);
            this.setState({value: 0.58});
        } else if (prevProps.active && !active) {
            Animated.timing(this.state.animate, {toValue: 0}).start();
        }
    }

    render() {
        const {text} = this.props;
        if (this.state.value === 0) return false;
        return (
            <div>
                <Animated.div
                    className="page-block"
                    style={{opacity: this.state.animate}}
                />
                <div className="loading-text">{text}</div>
                <div className="loading-wrapper">
                    <div className="spinner">
                        <div className="double-bounce1"/>
                        <div className="double-bounce2"/>
                    </div>
                </div>
            </div>
        )
    }
}

Loader.propTypes = {
    // 加载的文本
    text: PropTypes.string.isRequired,
    // 是否激活状态
    active: PropTypes.bool.isRequired
};

Loader.defaultProps = {
    text: 'Loading',
    active: false
};

export default Loader
复制代码

使用

 

 

<Loader active={this.state.status}/>

 

posted @   一路向北√  阅读(527)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)

web应用开发&研究 -

业精于勤而荒于嬉。

工作,使我快乐。


Font Awesome | Respond.js | Bootstrap中文网

点击右上角即可分享
微信分享提示