如何在 React JS 中检查损坏的图像
How to check for broken images in React JS
我正在编写一个模块,它从 json 获取文章数据并在文章文本上显示大图像,正如他们所说的英雄模块。
我已经获得数据并进行了设置,如果有图像,它将显示该图像,如果数据中没有图像,它将显示默认图像。
问题是此方法不会替换损坏的 links 以显示默认图像。
我对反应和使用状态还是陌生的...问题是,我应该使用状态来检查损坏的 link 吗?我该怎么做?
这就是我在模块中获取数据作为道具的方式:
const { newsItemData: {
headline = '',
bylines = [],
publishedDate: publishDate = '',
updatedDate: updatedDate = '',
link: newsLink = '',
contentClassification: category = '',
abstract: previewText = '',
abstractimage: { filename: newsImage = '' } = {},
surfaceable: { feature: { type: featureType = '' } = {} } = {},
} = {},
wideView,
showPill,
defaultImage } = this.props;
我是这样显示信息的:
<div className={imageContainerClassName} style={customBackgroundStyles}>
{newsImage ? <img className="img-responsive" src={newsImage} alt={headline}/> : <img className="img-responsive" src={defaultImage} alt={headline}/>}
</div>
我应该怎么做才能同时检查损坏的图像?
我认为这就是所需的所有相关数据,让我知道是否需要显示其他任何数据。
谢谢!
有一个名为 onerror
的图像本机事件,可以在无法加载图像时执行操作。
<img onError={this.addDefaultSrc} className="img-responsive" src={newsImage} alt={headline}/>
//in your component
addDefaultSrc(ev){
ev.target.src = 'some default image url'
}
据我了解,您希望看到损坏的图像。你应该在 onError 属性中调用一个方法。检查这个
jQuery/JavaScript to replace broken images
如前所述,onError
是必经之路。
如果您正在寻找可以为您处理此问题的组件,请尝试 https://github.com/socialtables/react-image-fallback
这是我检查图片是否损坏的方法。有一个名为 onError 的属性,当图像损坏或无法加载时会调用该属性。
例如,这里是 img 标签:
<img id={logo.id} src={logo.url} alt ={logo.name} onError={this.handleImageError} />
我是如何处理错误的:
handleImageError = e => { //write your logic here.}
如果您知道图像的错误将是缺少它,就像您正在循环配置文件库并且其中一些没有可用的图片,那么您可以像这样简单地插入图像的路径作为回调:
<img
height="auto"
width={140}
src={bizLogo || "/img/error.png"}
alt="test"
/>
在我的例子中,打算在使用 map() 函数的组件中使用,在那种情况下需要将 e.target.src 更改为 e.currentTarget.src,如以下代码:
<img src={original.image}
alt=""
onError={e => { e.currentTarget.src = "your_image_not_found_defalt_picture_here"; }}
/>
import { useState } from "react";
import "./styles.css";
export default function App() {
const url = "https://secure.gravatar.com/avatar?d=wavatar";
const [showImage, setShowImage] = useState(true);
const hideImg = (event) => {
// this.setState({ showImg: false });
setShowImage(false);
};
return (
<div>
{showImage ? (
<img src={url} alt="perkimage" onError={hideImg} />
) : (
"Default text or image"
)}
</div>
);
}
我正在编写一个模块,它从 json 获取文章数据并在文章文本上显示大图像,正如他们所说的英雄模块。
我已经获得数据并进行了设置,如果有图像,它将显示该图像,如果数据中没有图像,它将显示默认图像。 问题是此方法不会替换损坏的 links 以显示默认图像。
我对反应和使用状态还是陌生的...问题是,我应该使用状态来检查损坏的 link 吗?我该怎么做?
这就是我在模块中获取数据作为道具的方式:
const { newsItemData: {
headline = '',
bylines = [],
publishedDate: publishDate = '',
updatedDate: updatedDate = '',
link: newsLink = '',
contentClassification: category = '',
abstract: previewText = '',
abstractimage: { filename: newsImage = '' } = {},
surfaceable: { feature: { type: featureType = '' } = {} } = {},
} = {},
wideView,
showPill,
defaultImage } = this.props;
我是这样显示信息的:
<div className={imageContainerClassName} style={customBackgroundStyles}>
{newsImage ? <img className="img-responsive" src={newsImage} alt={headline}/> : <img className="img-responsive" src={defaultImage} alt={headline}/>}
</div>
我应该怎么做才能同时检查损坏的图像? 我认为这就是所需的所有相关数据,让我知道是否需要显示其他任何数据。 谢谢!
有一个名为 onerror
的图像本机事件,可以在无法加载图像时执行操作。
<img onError={this.addDefaultSrc} className="img-responsive" src={newsImage} alt={headline}/>
//in your component
addDefaultSrc(ev){
ev.target.src = 'some default image url'
}
据我了解,您希望看到损坏的图像。你应该在 onError 属性中调用一个方法。检查这个 jQuery/JavaScript to replace broken images
如前所述,onError
是必经之路。
如果您正在寻找可以为您处理此问题的组件,请尝试 https://github.com/socialtables/react-image-fallback
这是我检查图片是否损坏的方法。有一个名为 onError 的属性,当图像损坏或无法加载时会调用该属性。 例如,这里是 img 标签:
<img id={logo.id} src={logo.url} alt ={logo.name} onError={this.handleImageError} />
我是如何处理错误的:
handleImageError = e => { //write your logic here.}
如果您知道图像的错误将是缺少它,就像您正在循环配置文件库并且其中一些没有可用的图片,那么您可以像这样简单地插入图像的路径作为回调:
<img
height="auto"
width={140}
src={bizLogo || "/img/error.png"}
alt="test"
/>
在我的例子中,打算在使用 map() 函数的组件中使用,在那种情况下需要将 e.target.src 更改为 e.currentTarget.src,如以下代码:
<img src={original.image}
alt=""
onError={e => { e.currentTarget.src = "your_image_not_found_defalt_picture_here"; }}
/>
import { useState } from "react";
import "./styles.css";
export default function App() {
const url = "https://secure.gravatar.com/avatar?d=wavatar";
const [showImage, setShowImage] = useState(true);
const hideImg = (event) => {
// this.setState({ showImg: false });
setShowImage(false);
};
return (
<div>
{showImage ? (
<img src={url} alt="perkimage" onError={hideImg} />
) : (
"Default text or image"
)}
</div>
);
}