const videoRefList = useRef<Array<HTMLVideoElement>>([])
const observer = new IntersectionObserver((entries, self) => {
entries.forEach((entry) => {
if (!entry.isIntersecting) {
(entry.target as HTMLVideoElement).pause()
self.unobserve(entry.target)
}
})
});
useEffect(() => {
return () =>{
observer.disconnect()
}
}, [])
<video
controls
muted
autoPlay
poster={mainUrl}
src={url}
onPlay={()=>{
videoRefList.current.forEach((node,i)=>{
if(i === index && node){
observer.observe(node)
}
})
}}
ref={(node)=>{
if(node){
videoRefList.current[index] = node
}
}}
>
</video>