将图标传递给 JS 对象
passing icons into a JS object
我有一个带有对象数组的 js 文件,我正在尝试使用组件动态加载属性,但我似乎无法弄清楚如何将图标传递给呈现组件。
这是我用来呈现数据的组件:
import React, { Component } from 'react';
import SkillData from '../../store/skillData';
import './SkillsCard.css';
class SkillsCard extends Component {
state = { }
renderSkills = () =>
SkillData.map((skill, _id) =>
<div key={_id} className="skillCard col-sm-3 m-2">
<div className="top">
{/* ***line in question*** */}
<div className="icon">{skill.icon}</div>
<h5>{skill.title}</h5>
</div>
<div className="bottom">
{skill.techs.map((tech,index)=>(
<div className='skillCardList' key={index}> {tech}</div>
))}
</div>
</div>
);
render() {
return (
this.renderSkills()
);
}
}
export default SkillsCard;
这是我从中提取数据的文件:
const SkillData = [
{
_id: '1',
icon: '../../assets/icons/frontend.png',
title: 'Front End',
techs: ['HTML5', 'CSS | SCSS', 'JavaScript', 'React | Redux', 'Angular']
},
{
_id: '2',
icon: '../../assets/icons/server.png',
title: 'Back End',
techs: ['NodeJS', 'Express', 'Postman', 'Authentication | Authorization']
},
{
_id: '3',
icon: '../../assets/icons/database.png',
title: 'Databases',
techs: ['MongoDB', 'mySQL', 'PostgreSQL']
}
]
export default SkillData
我遇到的问题是我无法获取图标的路径名来评估和实际呈现图标;相反,我的组件呈现路径上列出的文本。所有其他属性渲染得很好!有什么想法吗?
因为您只是将字符串值呈现给页面:
<div className="icon">{skill.icon}</div>
您是要使用 <img>
元素吗?:
<div className="icon">
<img src={skill.icon} />
</div>
这在我添加时有效
const icons = require.context('../assets/icons', true);
在 SKillData.js 文件中并将路径设置为:
icons('./iconName.png'),
非常感谢,大卫!
这对我有用。
直接从您的本地资产文件夹中获取,因此您不需要从 json 文件请求
中导入 link 头文件的复杂性
{/* line in question */}
<div className="icon">
<img src={require(`${skill.icon}`)} />
</div>
我有一个带有对象数组的 js 文件,我正在尝试使用组件动态加载属性,但我似乎无法弄清楚如何将图标传递给呈现组件。
这是我用来呈现数据的组件:
import React, { Component } from 'react';
import SkillData from '../../store/skillData';
import './SkillsCard.css';
class SkillsCard extends Component {
state = { }
renderSkills = () =>
SkillData.map((skill, _id) =>
<div key={_id} className="skillCard col-sm-3 m-2">
<div className="top">
{/* ***line in question*** */}
<div className="icon">{skill.icon}</div>
<h5>{skill.title}</h5>
</div>
<div className="bottom">
{skill.techs.map((tech,index)=>(
<div className='skillCardList' key={index}> {tech}</div>
))}
</div>
</div>
);
render() {
return (
this.renderSkills()
);
}
}
export default SkillsCard;
这是我从中提取数据的文件:
const SkillData = [
{
_id: '1',
icon: '../../assets/icons/frontend.png',
title: 'Front End',
techs: ['HTML5', 'CSS | SCSS', 'JavaScript', 'React | Redux', 'Angular']
},
{
_id: '2',
icon: '../../assets/icons/server.png',
title: 'Back End',
techs: ['NodeJS', 'Express', 'Postman', 'Authentication | Authorization']
},
{
_id: '3',
icon: '../../assets/icons/database.png',
title: 'Databases',
techs: ['MongoDB', 'mySQL', 'PostgreSQL']
}
]
export default SkillData
我遇到的问题是我无法获取图标的路径名来评估和实际呈现图标;相反,我的组件呈现路径上列出的文本。所有其他属性渲染得很好!有什么想法吗?
因为您只是将字符串值呈现给页面:
<div className="icon">{skill.icon}</div>
您是要使用 <img>
元素吗?:
<div className="icon">
<img src={skill.icon} />
</div>
这在我添加时有效
const icons = require.context('../assets/icons', true);
在 SKillData.js 文件中并将路径设置为:
icons('./iconName.png'),
非常感谢,大卫!
这对我有用。
直接从您的本地资产文件夹中获取,因此您不需要从 json 文件请求
中导入 link 头文件的复杂性{/* line in question */}
<div className="icon">
<img src={require(`${skill.icon}`)} />
</div>