img图片加载失败的处理

  • img图片加载失败的措施

    很多产品都会要求图片加载失败会出现一个占位符这种类似的图片,在vue中您可以通过以下方式去解决

第一种:

若图片加载不出来,可以通过onerror属性来控制图片输出
<img v-if="basicName.mainHandlerSign" :src="basicName.mainHandlerSign"
style="width: 118px;height: 50px;vertical-align: middle" οnerrοr="this.src='../../../static/image/uploaded.png'"/>

第二种:

<div class="hamger">
            <img :src="serverMap.baseImg + '/'+getCuisine(item.packageImage,0)" alt="套餐图片" :onerror="defaultImg">
</div>
import userPhoto from '@/assets/image/flase.png'
export default{
  data(){
    return{
    // 加载失败
      defaultImg: 'this.src="' + userPhoto + '"',
    }
}
javascript
124 views
Comments
登录后评论
Sign In
·

这个挺常见的

·

innocent 你这样直接拼接语句真的好吗? sunglasses 确定老板不会揍你

·

React 实现异常图片占位,优化用户体验,可以看看这个,类似的问题,react 下的实现:

// Note: 此组件避免在服务端渲染应用中使用,可能会有错误
import React, { FC, useCallback, useEffect, useState } from 'react';

interface Props extends React.DetailedHTMLProps<React.ImgHTMLAttributes<HTMLImageElement>, HTMLImageElement> {
  fallbackSrc?: string;   // 加载图片异常时的替代图片
}

const Index: FC<Props> = ({ src, fallbackSrc, ...props}) => {
  const [originalSrc, setOriginalSrc] = useState(src);

  // 错误标志,确保 onError 只执行一次,避免死循环
  const [errored, setErrored] = useState(false);

  // 图片改变时重置数据
  useEffect(() => {
    setOriginalSrc(src);
    setErrored(false);
  }, [src]);

  const onError = useCallback(() => {
    if (!errored) {
      setOriginalSrc(fallbackSrc);
      setErrored(true);
    }
  }, [errored, fallbackSrc]);

  // eslint-disable-next-line jsx-a11y/alt-text
  return <img src={originalSrc} onError={onError}{...props}/>;
};

export default Index;