Отображение данных с помощью динамических изображений

Итак, у меня есть следующий реагирующий компонент

import React from "react";
import ReactDOM from "react-dom";

/// Get out static assets
import logo1 from '../images/scaffold/logo1.svg';
import logo2 from '../images/scaffold/logo2.svg';
import logo3 from '../images/scaffold/logo3.svg';
import logo4 from '../images/scaffold/logo4.svg';
import logo5 from '../images/scaffold/logo5.svg';
import logo6 from '../images/scaffold/logo6.svg';
import logo7 from '../images/scaffold/logo7.svg';

const Links = (props) => {
  return (
    <div>
    {Object.keys(props.link).map(i => (
      <a key = {i} href = {props.link[i]}
      target = "_blank">
      <div className = "release-action">
      <div className = "release-distro-logo">
      <img src = {logo1}/>
      </div>
      <span>Action1</span>
      </div>
      </a>
    ))}
    </div>
  )
}

export default Links;

Я хотел бы изменить текст логотип и действие на основе данных, поступающих из реквизит. Можно ли для этого использовать ключ пары значений в операторе if? Так, например, если ключ был ссылка2, тогда будет использоваться логотип2, и диапазон изменится на Действие2, в основном логотипы будут визуально представлять ссылку, а URL-адрес ссылки будет использоваться в src ссылки.

ссылки загружаются через json и проталкиваются через реквизиты в компонент

"isbn" : "3049204",
"author" : "author name",
"links": {
    "link1": "https://www.google.com",
    "link2": "https://www.yahoo.com",
    "link3": "https://www.facebook.com",
    "link4": "https://www.twitter.com",
    "link5": "https://www.instagram.com",
    "link6": "https://www.gmail.com"
  },
"cta" : "buy now"

Используйте Object.entries

Tiago Coelho 01.05.2018 19:32
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
31
1

Ответы 1

Решением было бы создать объект, содержащий все доступные изображения, например:

const logos = {
 link1: logo1,
 link2: logo2,
 // ...
};

А потом в React

const Links = (props) => {
  return (
    <div>
    {Object.keys(props.link).map(i => (
      <a key = {i} href = {props.link[i]}
      target = "_blank">
      <div className = "release-action">
      <div className = "release-distro-logo">
      <img src = {logos[i]}/>
      </div>
      <span>Action1</span>
      </div>
      </a>
    ))}
    </div>
  )
}

Дело в том, что логотипы должны соответствовать ключу или значению props / data. Вышеупомянутое решение означает, что ссылки и логотипы всегда должны быть в правильном порядке, чтобы изображения соответствовали ссылкам .. верно?

Timmy Lee 01.05.2018 19:26

хм .. я все еще не понимаю вышесказанное. как вы сопоставляете логотип с правильной ссылкой, когда ссылки предоставляются через json и передаются через реквизиты? Я обновил пример данных, так как список ссылок поступает из загруженного json

Timmy Lee 01.05.2018 19:37

Я собираюсь предоставить логотипы для ссылок в json и сделать это таким образом, а не пытаться условно сделать это в приложении, спасибо за помощь!

Timmy Lee 01.05.2018 19:49

Другие вопросы по теме