I need to use my custom spinner in other components. So I made a reusable spinner?
How do I copy its styles and customize other styles? I want to change just the stroke
or the color of the loading. Pls check my code here
Spinner.js
import styled from 'styled-components'
const StyledSpinner = styled.svg`
animation: rotate 1s linear infinite;
width: 50px;
height: 30px;
& .path {
stroke: #000000;
stroke-linecap: round;
animation: dash 1.5s ease-in-out infinite;
}
@keyframes rotate {
100% {
transform: rotate(360deg);
}
}
@keyframes dash {
0% {
stroke-dasharray: 1, 150;
stroke-dashoffset: 0;
}
50% {
stroke-dasharray: 90, 150;
stroke-dashoffset: -35;
}
100% {
stroke-dasharray: 90, 150;
stroke-dashoffset: -124;
}
}
`
const Spinner = () => (
<StyledSpinner viewBox="0 0 50 50">
<circle className="path" cx="25" cy="25" r="20" fill="none" strokeWidth="4" />
</StyledSpinner>
)
export default Spinner
NewComponent.js
import CustomSpinner from '../Spinner'
const Spinner = styled(CustomSpinner)`
& .path {
stroke: #fff;
}
`
You can add custom style inside the Spiner.js component and then export that. In NewComponent.js you export custom spiner style and put it same way like in Spiner.js
Spinner.js
import styled from 'styled-components';
export const StyledSpinner = styled.svg`
animation: rotate 1s linear infinite;
width: 50px;
height: 30px;
& .path {
stroke: ${({ colorValue }) => colorValue}; // color props
stroke-linecap: round;
animation: dash 1.5s ease-in-out infinite;
}
@keyframes rotate {
100% {
transform: rotate(360deg);
}
}
@keyframes dash {
0% {
stroke-dasharray: 1, 150;
stroke-dashoffset: 0;
}
50% {
stroke-dasharray: 90, 150;
stroke-dashoffset: -35;
}
100% {
stroke-dasharray: 90, 150;
stroke-dashoffset: -124;
}
}
`;
const Spinner = ({ colorValue }) => (
<StyledSpinner viewBox="0 0 50 50" colorValue={colorValue}>
<circle
className="path"
cx="25"
cy="25"
r="20"
fill="none"
strokeWidth="4"
/>
</StyledSpinner>
);
export default Spinner;
NewComponent.js
import Spinner from '../Spinner';
const CustomSpiners = () => (
<Spinner colorValue="white" />
<Spinner colorValue="red" />
);
export default CustomSpiner