【发布时间】:2023-02-23 14:11:58
【问题描述】:
我有一个接受这样的道具的组件列表
export default function Item1({fontSize, color, ...props}) {
return (
<SvgIcon
fontSize={fontSize}
color={color}
viewBox="0 0 18 18"
alignmentBaseline="middle"
{...props}
>
<somethingElse />
</SvgIcon>
)
}
我想创建一个包装类,以便它接受图标的名称并返回这些图标。我创建了一些东西,但我觉得编写如下代码不是一个好习惯:-
export default function WrapperComponent({name, fontSize, color, ...props }) {
if(name === 'Item1'){
return <Item1 fontSize={fontSize} color={color} />
}
if(name === 'Item2'){
return <Item2 fontSize={fontSize} color={color} />
}
if(name === 'Item3'){
return <Item3 fontSize={fontSize} color={color} />
}
return(
<div>
{children}
</div>
)
}
我想在这里创建一个映射,但我不确定如何实现?
【问题讨论】:
-
您可以使用条件渲染并根据图标名称仅渲染该图标
-
在组件 Item1 中只有 <SomethingElse /> 是可变的?所有其他元素的结构是否相同?即他们都有 SvgIcon?
-
是的,其他元素的结构是一样的。全部包括 <SvgIcon> 但我想在某个地方为此创建一个映射
标签: javascript reactjs