mirror of
https://github.com/vercel/commerce.git
synced 2025-07-23 04:36:49 +00:00
Delay, and lazily load Marquees
This commit is contained in:
@@ -2,6 +2,7 @@ import cn from 'classnames'
|
||||
import s from './Marquee.module.css'
|
||||
import { FC, ReactNode, Component } from 'react'
|
||||
import Ticker from 'react-ticker'
|
||||
import { useInView } from 'react-intersection-observer'
|
||||
|
||||
interface Props {
|
||||
className?: string
|
||||
@@ -9,7 +10,11 @@ interface Props {
|
||||
variant?: 'primary' | 'secondary'
|
||||
}
|
||||
|
||||
const M: FC<Props> = ({ className = '', children, variant = 'primary' }) => {
|
||||
const Maquee: FC<Props> = ({
|
||||
className = '',
|
||||
children,
|
||||
variant = 'primary',
|
||||
}) => {
|
||||
const rootClassName = cn(
|
||||
s.root,
|
||||
{
|
||||
@@ -18,14 +23,20 @@ const M: FC<Props> = ({ className = '', children, variant = 'primary' }) => {
|
||||
},
|
||||
className
|
||||
)
|
||||
|
||||
const [ref, inView] = useInView({
|
||||
triggerOnce: true,
|
||||
rootMargin: '200px 0px',
|
||||
})
|
||||
console.log(inView)
|
||||
return (
|
||||
<div className={rootClassName}>
|
||||
<Ticker offset={80}>
|
||||
{({ index }) => <div className={s.container}>{children}</div>}
|
||||
</Ticker>
|
||||
<div className={rootClassName} ref={ref}>
|
||||
{inView ? (
|
||||
<Ticker offset={80}>
|
||||
{() => <div className={s.container}>{children}</div>}
|
||||
</Ticker>
|
||||
) : null}
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
||||
export default M
|
||||
export default Maquee
|
||||
|
Reference in New Issue
Block a user