javascript - 仅在没有缓存的情况下反应模糊
问题描述
我正在使用 React 在 Next.JS 中构建一个应用程序,我们有一个图像模糊实现,可以很好地解决一个问题。这是实现的草图:
function ImageElement({src, srcSet, sizes, base64}){
const [loaded, setLoaded] = useState(false);
const imgRef = useRef();
useEffect(() => {
if(imgRef.current.complete){
setLoaded(true)
}
}, []);
return (
<div>
<img className="placeholder" src={base64} alt="" />
<img
className="regular"
srcSet={srcSet}
sizes={sizes}
loading="lazy"
decoding="async"
style={{
opacity: loaded ? 1 : 0
}}
ref={imgRef}
onLoad={handleLoaded}
/>
</div>
);
还有一个transition: opacity 500ms ease 0s
关于图像和其他各种 css 的规则以使其工作(尽管这些似乎不是问题的根源)。
我遇到的问题是,因为不透明度总是从 0 开始,所以每次页面加载时都会进行模糊处理,即使图像被缓存并且不需要缓存也是如此。我想找到一种方法来检查它在第一次渲染之前是否已缓存,但我尝试过的任何方法都没有奏效。
我尝试了一个创建img
元素并检查它是否已加载的函数,但是在我构建时它似乎不起作用,并且在开发模式下收到此错误消息:
Prop `style` did not match. Server: "opacity:0" Client: "opacity:1"
有什么我想念的吗?
解决方案
推荐阅读
- datatable - 防止数据表崩溃
- java - 如果 String 包含大于 Integer.MAX_VALUE 的数字
- javascript - APIC 2018:如何在网关脚本中读取来自调用策略的 XML 响应
- html - 在visualforce中,CSS样式的高度不适用于表格
- websphere - 集群环境中 EJB 计时器服务的自定义调度程序实例中的问题
- json - 我怎样才能从我的对象中只发布一个元素?
- r - 超链接闪亮用户界面下拉菜单的标题?
- python - heartbleed PoC ssltest,py 不起作用,socket.send 错误:管道损坏
- typescript - 输入 lodash 函数的正确方法是什么?
- scala - Spark比较布尔列与字符串列的工作方式与比较值相等的int和字符串不同