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

从零开始开发一个基于React的加载动画库

时间:2023-03-16 01:23:33 科技观察

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

)}
):null;};exportdefaultLoader;Spining动画组件主要是具体的动画内容,这里我挑选了10多种动画进行包装,举个BallBeat的例子:importReact,{memo}from'react';importLoaderfrom'../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';exportdefault()=>;按需导入配置:extraBabelPlugins:[['babel-plugin-import',{libraryName:'@alex_xu/react-loading',libraryDire目录:'es',camel2DashComponentName:false,样式:true,},],,后续会不断丰富加载动画库,包括骨架屏动画等,欢迎使用和star支持~github地址:https://github.com/MrXujiang/react-loading