reactjs - 您如何将 refs 与 map 函数和 Intersection Observer 一起使用?
问题描述
我正在尝试创建一个动画时间线,以与地图功能和交叉点观察器做出反应,以便时间线的每个部分按顺序加载。
我在使用裁判时遇到问题,因为我相信裁判只链接到地图上的最后一项?我环顾四周,似乎找不到任何东西。
这是我的代码:
import dataxp from '../Data/data-xp'
import TimelineItem from './TimelineItem'
function useOnScreen(options) {
const ref = React.createRef()
const [visible, setVisible] = React.useState(false);
React.useEffect(() => {
const observer = new IntersectionObserver(([entry]) => {
setVisible(entry.isIntersecting);
}, options);
if (ref.current) {
observer.observe(ref.current)
}
return () => {
if (ref.current) {
observer.unobserve(ref.current)
}
}
}, [ref, options])
return [ref, visible]
}
function Timeline() {
const [ref, visible] = useOnScreen({rootMargin: '-500px'})
return (
dataxp.length > 0 && (
<div className='timeline-container'>
<div className='title-container'>
<h1 className='xp-title'>EXPERIENCE</h1>
</div>
{visible ? (dataxp.map((data, i) => (
<TimelineItem data={data} key={i} ref={ref}/>
)
)) : (
<div style={{minHeight: '30px'}}></div>)}
<div className='circle-container'>
<div className='end-circle'> </div>
</div>
</div>
)
)
}
export default Timeline
解决方案
推荐阅读
- r - 使用哪个循环,R 语言?
- postgresql - 在 postgresql 中以 ipv6 格式转换十六进制字符串
- solr - Solr 词干与模糊性一起返回 0 个结果
- php - 无法使用 Pango 的 PHP Imagick 自定义字体/阿拉伯连字的另一种解决方案
- r - 如何使用 R eg nleqslv 找到非线性方程的多个解?
- java - 如何在 log4j 中集成编程配置?
- c# - C# 泛型 - 返回一个类型依赖于参数的列表。
- html - 正则表达式模式从 HTML 标签中抓取数据
- python - Python脚本覆盖Excel中的行
- java - Tomcat 需要很长时间才能启动 - 无法禁用 TLD 扫描程序