本文介绍在 react 应用中处理 `` 标签加载失败(如 404)的正确方式,通过 `onerror` 事件动态
替换为默认图片,并避免无限循环等常见陷阱。
在 React 开发中,图片资源因 URL 无效、网络异常或服务端返回 404 而加载失败是常见问题。仅靠初始 src 的三元判断(如 !imgURL ? defaultSrc : imgURL)无法覆盖「URL 有效但资源实际不存在」的场景——此时浏览器会触发 onError 事件,需在此回调中主动降级。
正确的做法是使用 onError 事件处理器,并立即清除当前元素的 onerror 绑定,防止后续重复赋值导致死循环(例如:默认图本身也加载失败时反复触发)。以下是推荐实现:
@@##@@ {
currentTarget.onerror = null; // 关键:解除事件监听,避免递归触发
currentTarget.src = "https://image.defaultimg.jpg";
}}
className="card-img-top"
alt="图片描述"
/>⚠️ 注意事项:
该方案轻量、兼容性强(支持所有现代浏览器),无需额外依赖,是 React 图片容错处理的标准实践。