【发布时间】:2021-12-12 22:32:33
【问题描述】:
我想使用其他一些元素的高度来动态设置一些元素的高度。不幸的是,我不知道如何获取对“源”对象的引用并且总是陷入无限循环。这是我到目前为止所尝试的。 TimelineData 只是一个简单的对象,具有一些属性来填充元素:
const TimelineElement : React.FC<{data: TimelineData, ref : any}> = ({data, ref}) => {
return <div className="timeline-element" ref={ref}>
<div className="timeline-element-title">{data.title}</div>
<div className="timeline-element-details">{data.details}</div>
</div>;
}
export const Timeline : React.FC<{data: TimelineData[]}> = ({data}) => {
const refs = data.map(() => createRef<HTMLElement>());
const components = data.map(
(r, i) => <TimelineElement ref={(el : any) => refs[i] = el} data={r}/>
);
const [heights, setHeights] = useState<any[]>([]);
useLayoutEffect(() => {
setHeights(refs.map(
ref => ref.current?.tagName
));
}, [components, refs]);
return <div className="timeline">
{components}
{JSON.stringify(heights)}
</div>;
}
【问题讨论】:
标签: javascript html reactjs typescript