Я работаю над проектом React, в котором компоненты анимируются, когда они прокручиваются для просмотра. Я использую Framer Motion. Как сделать так, чтобы анимация срабатывала только при первой прокрутке компонента?
Прямо сейчас, если я прокручиваю страницу вниз, анимация работает должным образом. Однако, если я обновлю страницу или уйду со страницы и вернусь, анимация снова сработает. Прокрутка до середины страницы, обновление и последующая прокрутка вверх вызовут анимацию компонентов, которые были прокручены ранее.
Я понимаю, что это поведение Framer Motion по умолчанию, переходящее от начального значения к значению анимации при перемонтировании компонентов. Я хочу предотвратить такое поведение компонентов, которые раньше находились в области просмотра пользователей.
Пример кода для одного из компонентов размещен ниже. Любая помощь приветствуется.
const Banner = ({ title, body, buttonStyle, buttonText, image, switchSide, link }) => {
const { ref, inView } = useInView({
threshold: .8
})
return (
<motion.div className="banner"
ref={ref}
initial={{ opacity: 0 }}
animate={ inView ? { opacity: 1 } : ''}
transition={{ duration: .75 }}
>
<div className={`container ${switchSide ? 'banner-switch': ''}`}>
<div className="side-a">
<img src={ image } />
</div>
<div className="side-b">
<h2>{ title }</h2>
<p>{ body }</p>
{
buttonText
? <Button buttonStyle={buttonStyle} link={link} justify="flex-start">{ buttonText }</Button>
: ''
}
</div>
</div>
</motion.div>
)
}
export default Banner