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