如何渲染基于json文件信息的组件?我有一个呈现UL列表的映射。渲染每个Li。(我知道我可以使用img完成此操作,然后将src={}作为对象从json文件中传递。但我想知道有没有别的办法解决这个问题。代码如下:
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>
)
}发布于 2020-08-25 01:03:33
我会把你的socials.json转换成socials.js。然后,您可以更灵活地设置数据,如下所示:
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;然后,您可以在地图中动态呈现这些图标,如下所示:
// ...
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>
);
}发布于 2020-08-25 02:48:20
您可以创建一个方法,该方法将根据social.icon值为您提供图标。例如:
const getIcon = (icon) => {
switch(icon) {
case A:
return <IconA />;
case B:
return <IconB />;
default:
return null;
}
}并在需要的地方调用此getIcon方法,并将social.icon作为参数。
https://stackoverflow.com/questions/63548903
复制相似问题