axrising
@axrising

Как динамически подставлять иконки для ключей объекта?

Из сервера приходит объект
"contacts": {
                    facebook: "",
                    github: "",
                    instagram: "",
                    mainLink: null,
                    twitter: "",
                    vk: "",
                    website: null,
                    youtube: null
                }
, нужно для каждого ключа подставлять иконку material ui, как это можно реализовать? буду благодарен за ответ

Исходный код сейчас
{Object.keys(profile.contacts).map((key) => {
                return (
                  <Contact
                    key={key}
                    contactTitle={key}
                    contactLink={
                      <a target='_blank' rel='profile' href={`${profile.contacts[key as keyof ContactsType]}`}>
                        {profile.contacts[key as keyof ContactsType]}
                      </a>
                    }
                  />
                )
              })}


const Contact: React.FC<ContactPropsType> = ({ contactTitle, contactLink }) => {
  return (
    <div>
      <span>
        {contactTitle}: {contactLink}
      </span>
    </div>
  )
}
  • Вопрос задан
  • 182 просмотра
Решения вопроса 2
@shading
Создаешь функцию, которая возвращает тебе компонент material UI по ключу?

getIcon = key => {
  switch(key) {
      case: 'facebook': 
         return {
              <MaterialUiComponent {...rest} />
         }
   }
}



const Contact: React.FC<ContactPropsType> = ({ key, contactTitle, contactLink }) => {
  return (
    <div>
      <span>
        {getIcon(key)}
        {contactTitle}: {contactLink}
      </span>
    </div>
  )
}
Ответ написан
Seasle
@Seasle Куратор тега JavaScript
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы