如何为 Next.JS 的图像组件指定回退源

How to specify fallback source for Image component of Next.JS

我创建了一个名为 Avatar 的组件,它包装了 Next.JSImageAvatar 的父组件使用 src 属性(它是一个字符串)来更改图像源(这将是一个远程源)。如果它没有指定 src 属性,那么将使用默认的本地图像,如以下代码片段所示。

import Image from "next/image";
import styles from "./Avatar.module.css";
import AvatarPhoto from "../images/avatar-default.png";

export const Avatar = ({ src, alt, size = 47 }) => {
  return (
    <div className={styles.imgContainer}>
      <Image
        className={styles.img}
        src={src ?? AvatarPhoto}
        alt={alt}
        width={size}
        height={size}
      />
    </div>
  );
};

我无法实现的是,如果指定的来源无效,如何显示本地图像。 例如;如果指定源中没有图片(如果获取源请求结果为404错误),我想使用默认头像。

是否有 NextImage 的回退 属性? 如果没有,我该怎么做?

我认为这应该可行。

export const Avatar = ({ src, alt, size = 47 }) => {
  const [error, setError] = useState(false);

  return (
    <div className={styles.imgContainer}>
      <Image
        className={styles.img}
        src={!error ? src : AvatarPhoto}
        alt={alt}
        width={size}
        height={size}
        onError={() => setError(true)}
      />
    </div>
  );
};