首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React呈现组件React-Icons

React呈现组件React-Icons
EN

Stack Overflow用户
提问于 2020-08-23 23:40:30
回答 2查看 209关注 0票数 0

如何渲染基于json文件信息的组件?我有一个呈现UL列表的映射。渲染每个Li。(我知道我可以使用img完成此操作,然后将src={}作为对象从json文件中传递。但我想知道有没有别的办法解决这个问题。代码如下:

代码语言:javascript
复制
import React from 'react'
import { FiLinkedin as LinkedinIcon, FiGithub as GithubIcon } from 'react-icons/fi';

import Data from '../../socials.json';

import { Container } from './styles';

export default function Profile() {
  return (
    <Container>
      <ul id="profile-links">
        {Data.map((social, index) => {
          return (
            <li id={social.id} key={social.id}>
              <a href={social.url} target="_BLANK" rel="noreferrer">
                <LinkedinIcon size={22} />  // change this component based on -social.icon info-
                <strong>{social.title}</strong>
                <span className="small-link">{social.slug}</span>
              </a>
            </li>
          )
        })}
      </ul>
    </Container>
  )
}
EN

回答 2

Stack Overflow用户

发布于 2020-08-25 01:03:33

我会把你的socials.json转换成socials.js。然后,您可以更灵活地设置数据,如下所示:

代码语言:javascript
复制
import {
  FiLinkedin as LinkedinIcon,
  FiGithub as GithubIcon,
} from 'react-icons/fi';

const Data = [
  {
    id: 1,
    url: 'url 1',
    title: 'title 1',
    slug: 'slug 1',
    icon: LinkedinIcon,
  },
  // Other socials...
];

export default Data;

然后,您可以在地图中动态呈现这些图标,如下所示:

代码语言:javascript
复制
// ...
import Data from '../../socials';

export default function Profile() {
  return (
    <Container>
      <ul id="profile-links">
        {Data.map((social, index) => {
          return (
            <li id={social.id} key={social.id}>
              <a href={social.url} target="_BLANK" rel="noreferrer">
                <social.icon size={20} />
                <strong>{social.title}</strong>
                <span className="small-link">{social.slug}</span>
              </a>
            </li>
          );
        })}
      </ul>
    </Container>
  );
}
票数 1
EN

Stack Overflow用户

发布于 2020-08-25 02:48:20

您可以创建一个方法,该方法将根据social.icon值为您提供图标。例如:

代码语言:javascript
复制
const getIcon = (icon) => {
    switch(icon) {
       case A:
        return <IconA />;
       case B:
        return <IconB />;
       default:
        return null;
    }
}

并在需要的地方调用此getIcon方法,并将social.icon作为参数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63548903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档