【发布时间】:2021-07-20 09:00:41
【问题描述】:
我正在寻找一种可靠的策略来计算其中包含许多孩子的父母的身高,无论孩子是图像、视频还是字体等。(想想投资组合内容)
可以在此处找到该问题的一个简单示例:
https://codesandbox.io/s/wrong-height-tkvcm?file=/src/useHeight.js:347-545
图像加载速度很慢,因此计算函数会过早触发。并且由此产生的高度计算完全关闭。
我尝试过的事情
-
计算所有图像的比例,明确设置图像高度。这行得通,但是我仍然有视频、字体、慢速 API 也需要加载。所以这个策略感觉很坑爹。
-
调整大小观察者。也无法可靠地等待内容加载。性能昂贵。还有这个issue。
-
React setState/useEffect/array 依赖项。让我走得很远,但最终还是失败了,因为很难知道哪个状态会最后触发以更新高度计算。
-
我尝试了 React 并发模式来尝试在计算开始之前预加载内容。对于非 API 的情况,这似乎有点过头了。我只需要担心本地图像和资产。
React.useEffect(() => {
updateHeight();
window.addEventListener("resize", updateHeight);
return () => {
window.removeEventListener("resize", updateHeight);
};
}, [updateHeight]);
我确实认为使用 React 预加载内容是最好的方法,但我很想知道是否有其他人尝试解决在内部包含大量内容的大型容器上计算尺寸的问题?
更复杂的例子: https://codesandbox.io/s/stupefied-wilson-qzb1i?file=/src/components/CaseWrapper/index.js:756-836
【问题讨论】:
标签: javascript html reactjs react-hooks