Next.js条件图像渲染

4uqofj5v  于 2023-03-02  发布在  其他
关注(0)|答案(2)|浏览(142)

我尝试在我的应用程序上显示餐厅卡片,但我不确定什么是根据餐厅有条件地渲染图像的最佳方式。这种方式可以工作,但不是最佳方式,因为如果我有10张卡片,我必须手动添加所有10张导入和案例。

import Link from "next/link";
import React from "react";
import styles from "../styles/Card.module.css";
import kegLogo from "../assets/Keg.png";
import Image from "next/image";
import pizzaLogo from "../assets/pizza-logo.png";

function RestaurantCard({ id, title, description }) {
  return (
    <Link className={styles.link} href={`/restaurants/${title}`}>
      <div className={styles.card}>
        {id == 1 && (
          <Image className={styles.image} src={kegLogo} alt={title} />
        )}
        {id == 2 && (
          <Image className={styles.image} src={pizzaLogo} alt={title} />
        )}
        <div className={styles.content}>
          <h3 className={styles.title}>{title}</h3>
          <p className={styles.description}>{description}</p>
        </div>
      </div>
    </Link>
  );
}

export default RestaurantCard;
pinkon5k

pinkon5k1#

你可以在接收 prop 的子组件上使用object,并使用title或id作为你的object对的键

const imageObj = {
 title1: image1,
 title2: image2,
}

所以你的图像组件应该是

<Image className={styles.image} src={imageObj[title]} alt={title} />
bpzcxfmw

bpzcxfmw2#

与id、title和description一样,imageSrc可以作为属性传递,因此,组件不需要在其自身中保留逻辑。

相关问题