Я работаю над проектом реагирования и пытаюсь анимировать и показывать элементы div, как только они появляются в представлении. Я использую хук useInView из 'react-intersection-observer', чтобы определить, находится ли div в представлении, а затем запускаю анимацию, чтобы сделать div видимым.
Однако это не работает нормально, когда у меня есть два div в одном компоненте, т.е. как только первый div находится в представлении - анимируйте и покажите первый div, и когда вы прокручиваете дальше, как только второй div находится в вид - анимировать и показать второй div.
Любая помощь будет оценена по достоинству.
Вот код:
import { motion } from 'framer-motion';
import { useInView } from 'react-intersection-observer';
function Container(props) {
const { ref, inView } = useInView({
threshold: 1
});
const { ref1, inView1 } = useInView({
threshold: 1
});
return (
<div>
<motion.div ref={ref}>
<motion.h1
initial={{ x: -700, opacity: 0 }}
animate={ inView ? { x: 0, opacity: 1 } : ''}
transition={{ duration: .75 }} >
Sample Title 1
</motion.h1>
<motion.p
initial={{ x: 400, opacity: 0 }}
animate={ inView ? { x: 0, opacity: 1 } : ''}
transition={{ delay: 0.8, duration: 1, ease: "easeOut" }} >
Sample Description 1
</motion.p>
</motion.div>
<motion.div ref={ref1}>
<motion.h1
initial={{ opacity: 0 }}
animate={ inView1 ? { opacity: 1 } : ''}
transition={{ duration: .75 }} >
Sample Title 2
</motion.h1>
<motion.p
initial={{ x: 400, opacity: 0 }}
animate={ inView1 ? { x: 0, opacity: 1 } : ''}
transition={{ delay: 0.8, duration: 1, ease: "easeOut" }} >
Sample Description 2
</motion.p>
</motion.div>
</div>
);
}
export default Container;