如何使用样式图标输出故事书中的图标列表

Posted

技术标签:

【中文标题】如何使用样式图标输出故事书中的图标列表【英文标题】:How to output a list of icons in storybook with styled-icons 【发布时间】:2021-04-13 10:57:35 【问题描述】:

目前我正在手动添加图标,但是对于几个图标,这种方式没有问题。但是如果有 100 个图标,它就变成了一个真正的问题。我怎样才能使它可重复使用。所以我可以应用这个元素,让它成为我想要的任何图标。例如,最后它应该看起来像这样。

<Icon icon='login' color="yellow" mr="10px" fontSize="20px" />

// styled components
import  Facebook  from "@styled-icons/boxicons-logos/Facebook";
import  Instagram  from "@styled-icons/boxicons-logos/Instagram";

export const FaceBookIcon = styled(Facebook)`
    $typography 
    $space
    $layout
    $color
`;

export const InstagramIcon = styled(Instagram)`
    $typography 
    $space
    $layout
    $color
`;

// icons.tsx
import React from "react";
import  FaceBookIcon, InstagramIcon  from "./icon.styles";

export interface IconProps 
  width?: number;
  bg?: string;
  color?: string;


export const Icon: React.FC<IconProps> = (
  width,
  bg,
  color,
  ...props
) => 
  return (
    <div>
      <FaceBookIcon width=60 bg="black" color="white"/>
      <InstagramIcon width=60  bg="black" color="white"/>
    </div>
  );
;

【问题讨论】:

【参考方案1】:

假设您要将所有图标放在一个文件夹中,在本例中为boxicons-logos,将所有图标放在一个文件夹boxicons-logos 中,并为每个图标创建一个单独的文件,例如FaceBookIcon 创建FaceBookIcon.jsx 和InstagramIcon 类似创建InstagramIcon.jsx,将所有图标放入boxicons-logos 文件夹后 在其中创建一个index.js 文件,导出所有图标

// inside the index.js file
export default as FacebookIcon  from './FacebookIcon'
export default as InstagramIcon  from './InstagramIcon'
// for all the icons

完成后,在故事书文件中,您要在其中导入所有图标

//boxicons-logos is path to folder which contains all icons
import * as Icons from './boxicons-logos'

const AllIcons = () => 
const icons = Objet.values(Icons);
return (
     icons.map(IconComponent => <IconComponent width=60 bg="black" color="white" />)

【讨论】:

以上是关于如何使用样式图标输出故事书中的图标列表的主要内容,如果未能解决你的问题,请参考以下文章

使用故事书中的反应原生矢量图标反应原生 Web 问题

如何使用 WPF 按钮的参数或绑定来更改 XAML 样式中的 fa 图标

如何更改故事书中的特定元素样式?

如何使用下拉列表中的图标? [复制]

如何使用 kivymd 中的函数更改列表项图标?

css 如何设置ul的列表图标和列表文字对齐