What is react-spinners?
The react-spinners npm package provides a collection of loading spinner components for React applications. These spinners are customizable and can be used to indicate loading states in your application.
What are react-spinners's main functionalities?
ClipLoader
The ClipLoader is a simple circular spinner. You can customize its color, loading state, and size.
import { ClipLoader } from 'react-spinners';
function App() {
return (
<div className="App">
<ClipLoader color={"#123abc"} loading={true} size={150} />
</div>
);
}
BeatLoader
The BeatLoader consists of multiple dots that bounce. You can customize its color, loading state, size, and margin between dots.
import { BeatLoader } from 'react-spinners';
function App() {
return (
<div className="App">
<BeatLoader color={"#123abc"} loading={true} size={15} margin={2} />
</div>
);
}
BarLoader
The BarLoader is a horizontal bar that animates to indicate loading. You can customize its color, loading state, width, and height.
import { BarLoader } from 'react-spinners';
function App() {
return (
<div className="App">
<BarLoader color={"#123abc"} loading={true} width={100} height={4} />
</div>
);
}
Other packages similar to react-spinners
react-loader-spinner
react-loader-spinner provides a variety of SVG-based loading indicators for React applications. It offers more types of spinners compared to react-spinners and allows for more detailed customization of each spinner.
react-loading
react-loading is another package that offers a collection of loading indicators for React. It is simpler and has fewer customization options compared to react-spinners, but it is lightweight and easy to use.
react-content-loader
react-content-loader allows you to create SVG loading placeholders that mimic the content being loaded. It is more focused on skeleton screens rather than traditional spinners, providing a different approach to indicating loading states.
React Spinners
A collection of loading spinners with React.js based on Halogen.
This package is bootstraped using react-npm-boilerplate
Demo
Demo Page
Installation
npm install react-spinners --save
Usage
Each loader has their own default properties. You can overwrite the defaults by passing props into the loaders.
Each loader accepts a loading
prop as a boolean. The loader will not render anything if loading
is false
. The loading
prop defaults to true
.
IMPORTANT: This package uses emotion. Remember to add the plugin to .babelrc
, for example:
{
"presets": ["react", "env"],
"plugins": ["emotion"]
}
Examples
import React from 'react';
import { css } from 'react-emotion';
import { ClipLoader } from 'react-spinners';
import ClipLoader from 'react-spinners/ClipLoader';
const override = css`
display: block;
margin: 0 auto;
border-color: red;
`;
class AwesomeComponent extends React.Component {
constructor(props) {
super(props);
this.state = {
loading: true
}
}
render() {
return (
<div className='sweet-loading'>
<ClipLoader
className={override}
sizeUnit={"px"}
size={150}
color={'#123abc'}
loading={this.state.loading}
/>
</div>
)
}
}
Available Loaders, PropTypes, and Default Values
Common default props for all loaders:
loading: true
color: '#000000'
className: ''
Note:
className
works exactly like the className
works with the emotion package.
You can directly write your css in css syntax without the dirty camelCase css in jss syntax.
We recommend you to use this awesome library in your project. It supports Server side rendering with HTTP2 Stream!
More info about using className here
For size
, height
, and width
props, there are sizeUnit
, heightUnit
, and widthUnit
prop that accepts px
, %
, or em
. The default for the unit prop is px
.
Loader | size:int | height:int | width:int | radius:int | margin:str |
---|
BarLoader | | 4 | 100 | | |
BeatLoader | 15 | | | | 2px |
BounceLoader | 60 | | | | |
CircleLoader | 50 | | | | |
ClipLoader | 35 | | | | |
ClimbingBoxLoader | 15 | | | | |
DotLoader | 60 | | | | 2px |
FadeLoader | | 15 | 5 | 2 | 2px |
GridLoader | 15 | | | | |
HashLoader | 50 | | | | 2px |
MoonLoader | 60 | | | | 2px |
PacmanLoader | 25 | | | | 2px |
PropagateLoader | 15 | | | | |
PulseLoader | 15 | | | | 2px |
RingLoader | 60 | | | | 2px |
RiseLoader | 15 | | | | 2px |
RotateLoader | 15 | | | | 2px |
ScaleLoader | | 35 | 4 | 2 | 2px |
SyncLoader | 15 | | | | 2px |