当前位置: 首页 > 科技观察

受到推崇的!从零开始开发一个基于React的加载动画库

时间:2023-03-16 12:30:11 科技观察

在项目开发之前,我们经常会遇到需要开发各种加载动画的需求。我们可以利用已有的动画库进行手动改造实现(例如基于loaders.css(手动改造),也可以自主设计,但这意味着需要一定的时间去研发。为了为了减少这部分时间,让加载动画的设计更加简单易用,我开发了一个开箱即用的加载动画库react-loading,它内置了各种风格的加载动画,开发者可以轻松选择可以一键将你需要的动画安装到自己的项目中,简单轻量github地址:https://github.com/MrXujiang/react-loading接下来就和大家介绍一下这个动画库。技术实现@alex_xu/react-loading是一个基于loaders.css二次封装的React加载动画组件库,帮助你在项目中轻松使用不同风格的加载动画demo.gif技术上,顺序为了方便用户使用,我将loaders.css的每个动画样式和元素拆分成一个个单独的动画组件,并设计了一个相对灵活的API接口,让开发者可以更简单高效的使用,如下:组件设计动画组件库使用ReactHooks和Typescript实现,分为Loader容器和Spinning。Loader容器主要是将加载动画作为一个整体进行封装,方便我们使用Spinning动画组件。Spinning主要提供动画“骨骼”。Loader的具体实现如下:importReactfrom'react';import{ILoadingProp}from'../type';import'./index.less';constLoader:React.FC=({text,visible=true,textOffset,textColor,style,children,})=>{返回可见?({children}{!!text&&({''}{text}{''}

)}
):null;};exportdefaultLoader;SpiningAnimation组件主要是具体的动画内容,这里我挑选了10多种动画进行包装,我举一个BallBeat的例子:importReact,{memo}from'react';从'../Loader'导入Loader;import{ILoadingProp}from'../type';import'./style';exportdefaultmemo(({text,style,color,textColor,size,visible}:ILoadingProp)=>{return(
);},);项目中的具体用法如下:import{BallPulse,BallClipRotate,SquareSpin}from'@alex_xu/react-loading';导出默认值()=>;按需导入配置:extraBabelPlugins:[['babel-plugin-import',{libraryName:'@alex_xu/react-loading',libraryDirectory:'es',camel2DashComponentName:false,style:true,},],],