react-lrc
react-lrc copied to clipboard
The react component to display lyric from LRC.
react-lrc

The react component to display lyric from LRC. See example or play on CodeSandbox.
2.x README
Feature
- Auto scroll smoothly
- Support multiple lrcs
- User srcollable
- Custom style
- Typescript support
Install & Usage
npm install react-lrc
import { Lrc } from 'react-lrc';
const Demo = () => {
// ...
return (
<Lrc
lrc={lrc}
lineRenderer={lineRenderer}
currentMillisecond={currentMillisecond}
/>
);
};
Reference
Common Component Props
lineRenderer: ({ index: number, active: boolean, line: Line }) => React.ReactNode
The method to render every valid line of parsed lrc. active means whether it is current line. Line is LrcLine when using Lrc component or is MultipleLrcLine when MultipleLrc.
currentMillisecond?: number
Current time of lrc, default -1.
verticalSpace?: boolean
Make active line always vertical-middle even start or end of line list, default false.
without verticalSpace:

with verticalSpace:

onLineUpdate?: ({ index: number, line: Line | null }) => void
Call this when current line changed. Line is LrcLine when using Lrc component or is MultipleLrcLine when MultipleLrc.
recoverAutoScrollInterval
The interval of recovering auto scroll after user scroll. It is millisecond, default 5000.
Component Lrc
lrc: string
The lrc.
Component MultipleLrc
lrcs: string[]
The lrc array.
Hook useRecoverAutoScrollImmediately
When user scroll, react-lrc will stop auto scroll during recoverAutoScrollInterval. useRecoverAutoScrollImmediately helps recover auto scroll immediately.
import { Lrc, useRecoverAutoScrollImmediately } from 'react-lrc';
const Demo = () => {
const { signal, recoverAutoScrollImmediately } =
useRecoverAutoScrollImmediately();
return (
<>
<button type="button" onClick={recoverAutoScrollImmediately}>
recover auto scroll immediately
</button>
<Lrc {...otherProps} recoverAutoScrollSingal={signal} />
</>
);
};
Q & A
How to prevent user scroll ?
const style = { overflow: 'hidden !important' };
<Lrc style={style} recoverAutoScrollInterval={0} {...otherProps} />;
How to hide scrollbar ?
.lrc {
/* webkit */
&::-webkit-scrollbar {
width: 0;
height: 0;
}
/* firefox */
scrollbar-width: none;
}
<Lrc className="lrc" {...otherProps} />
License
MIT