根据数据库返回的值有条件地渲染图像源

发布于 2025-02-13 20:52:39 字数 888 浏览 3 评论 0原文

试图根据数据库返回的值的价值,将我的头缠绕着更改图像源的过程。

摘要:

function KnifesComponent() {

  const knifeCollection = collection(db, "knives");
  const [knives, setKnives] = useState([]);
  
  useEffect(() => {
    onSnapshot(knifeCollection, (snapshot) => {
      setKnives(snapshot.docs.map((doc) => ({ ...doc.data(), id: doc.id })));
    });
  }, []);  

  return (
      {knives.map((skin) => {
        return (
           {skin.rarity} // Returns "Ultra" for Example
           <div><img src={isUltra : require('../../public/Rarity_Ultra.png')}></div>
           
  );
}

我正在考虑制作具有所有值的const,然后根据需要使用所有值,但不确定如何确切地接近它

  const rarities = {
    Exclusive: require('../../public/Rarity_Exclusive.png'),
    Ultra: require('../../public/Rarity_Ultra.png'),
  }

是什么是根据值将不同图像进行条件格式化不同图像的正确方法?

Trying to wrap my head around what the process would be to change an image source depending on the value of what is returned from the database.

Snippet:

function KnifesComponent() {

  const knifeCollection = collection(db, "knives");
  const [knives, setKnives] = useState([]);
  
  useEffect(() => {
    onSnapshot(knifeCollection, (snapshot) => {
      setKnives(snapshot.docs.map((doc) => ({ ...doc.data(), id: doc.id })));
    });
  }, []);  

  return (
      {knives.map((skin) => {
        return (
           {skin.rarity} // Returns "Ultra" for Example
           <div><img src={isUltra : require('../../public/Rarity_Ultra.png')}></div>
           
  );
}

I was thinking of making a const with all the values in and then using as needed but not sure how exactly to approach it

  const rarities = {
    Exclusive: require('../../public/Rarity_Exclusive.png'),
    Ultra: require('../../public/Rarity_Ultra.png'),
  }

What is the proper way to conditionally format different images based on values?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烟若柳尘 2025-02-20 20:52:39

您可以将稀有物对象更改为此(路径为值):

const rarities = {
  Exclusive: '../../public/Rarity_Exclusive.png',
  Ultra: '../../public/Rarity_Ultra.png',
}

然后,您可以通过稀有性访问对象的图像。

function KnifesComponent() {

  const knifeCollection = collection(db, "knives");
  const [knives, setKnives] = useState([]);
  
  useEffect(() => {
    onSnapshot(knifeCollection, (snapshot) => {
      setKnives(snapshot.docs.map((doc) => ({ ...doc.data(), id: doc.id })));
    });
  }, []);  

  return (
    {
      knives.map((skin) => {
        return (
          {skin.rarity} // Returns "Ultra" for Example
          <div>
            <img src={require(rarities[skin.rarity])}>
          </div>
        );
      })     
    }
  );
}

对象也可以是这样(只有图像名称):

const rarities = {
  Exclusive: 'Rarity_Exclusive.png',
  Ultra: 'Rarity_Ultra.png',
}

并访问它们:

<img src={require(`../../public/${rarities[skin.rarity]}`)}>

You can change the rarities object to this (paths as values):

const rarities = {
  Exclusive: '../../public/Rarity_Exclusive.png',
  Ultra: '../../public/Rarity_Ultra.png',
}

Then you can then access the image from the object by rarity.

function KnifesComponent() {

  const knifeCollection = collection(db, "knives");
  const [knives, setKnives] = useState([]);
  
  useEffect(() => {
    onSnapshot(knifeCollection, (snapshot) => {
      setKnives(snapshot.docs.map((doc) => ({ ...doc.data(), id: doc.id })));
    });
  }, []);  

  return (
    {
      knives.map((skin) => {
        return (
          {skin.rarity} // Returns "Ultra" for Example
          <div>
            <img src={require(rarities[skin.rarity])}>
          </div>
        );
      })     
    }
  );
}

The object also can be like this (just the image names):

const rarities = {
  Exclusive: 'Rarity_Exclusive.png',
  Ultra: 'Rarity_Ultra.png',
}

And access them:

<img src={require(`../../public/${rarities[skin.rarity]}`)}>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文