Краткое описание
Благодаря предыдущей помощи удалось отобразить несколько компонентов значков в моем проекте React.За исключением того, что я не хочу, чтобы все они воспроизводились одновременно, а только тот, который я называю, на основе имени.Я немного сбит с толку относительно того, где я должен передавать реквизит, чтобы достичь того, чего я хочу.Я пытался работать с «переключателем / делом», как вы можете видеть в заголовке « То, что я пробовал », но я не знаю, как зациклить несколько дел.
Что у меня есть
App.js
import React, { Component } from 'react';
import './App.css';
import Icon from './library/icons/Icon';
class App extends Component {
render() {
return (
<div className='App'>
<Icon iconName='Icon1' />
</div>
);
}
}
export default App;
Icon.js
import React from 'react';
import * as icons from './icons'
function IconList({iconName}) {
const GetIcons = [];
for (const [name, icon] of Object.entries(icons)) {
GetIcons.push({name, icon})
}
const MapIcons = GetIcons.map(({name, icon}) => {
return (
<div>{name} {icon()}</div>
)
});
console.log(GetIcons)
return (
<div>{MapIcons}</div>
)
}
const Icon = ({iconName}) => (
<IconList />
);
export default Icon;
Что это делает
Это теперь отображает все компонентов SVG, которые я импортирую.Моя стрелка MapIcons выполняет цикл и отображает имя компонентов и функцию, отображающую значок svg.
Что я хочу достичь
- Вызов только одногозначок, основанный на значке iconName (как показано в App.js)
- Имеет список реквизитов, таких как 'fill =' currentColor ', которые я передаю своим значкам.
Что япробовал
Я пытался зациклить внутри коммутатора, чтобы у меня была каждая функция как случай.Но я уже не знал, что делать, чтобы передать реквизит функции.
function IconList({}) {
const GetIcons = [];
for (const [name, icon] of Object.entries(icons)) {
GetIcons.push({name, icon})
}
const SwitchIcons = (iconName, props) => {
switch (iconName) {
const MapIcons = GetIcons.map(({name, icon}) => {
case {name}:
return (
{icon()}
)
});
}
)
}
const Icon = ({
iconName = '',
stroke = 'currentColor',
strokeLinecap = 'round',
strokeLinejoin = 'round',
strokeWidth = '3px',
fill = 'currentColor',
viewBox = '0 0 100 100',
width = '100px',
className = 'icon icon' + name,
height = '100px'
}) => (
<div className={className}>
{SwitchIcons(iconName, { stroke })}
</div>
);
export default Icon;