packages/components/src/stories/icon_new_zh.stories.mdx
import { Meta, Canvas } from '@storybook/addon-docs'; import { IconUseInCanvas } from './examples/icon-in-canvas'; import { StarFilled } from '@apitable/icons'; import { StoryType } from './constants';
<Meta title={${StoryType.Design}/Icons 图标} />
需要从 @apitable/icons 库中引入需要的图标。
import { StarFilled } from '@apitable/icons';
图标经过 toString 方法统一的处理,变成由 Path 绘制的图形,在 canvas 中绘制图标。
import React, { useEffect } from 'react';
import { StarFilled } from '@apitable/icons';
export const Icon2Canvas = () => {
useEffect(()=>{
const canvas = document.getElementById('canvas') as HTMLCanvasElement;
if (canvas){
const ctx = canvas.getContext('2d');
ctx.fillStyle = 'red';
const p = new Path2D(StarFilled.toString());
ctx.fill(p);
}
},[])
return (
<div>
<StarFilled />
<canvas id="canvas" height="50" style={{ backgroundColor: '#eee' }}/>
</div>
)
}
效果如下:
<IconUseInCanvas />| 名称 | 类型 | 是否必须 | 描述 | 默认值 |
|---|---|---|---|---|
| size | number | string | 必填 | icon 大小 | 16px |
| color | string | 选填 | 颜色 | 16px |
| currentColor | boolean | 选填 | 显示与父级元素相同的颜色 | |
| className | string | 选填 | 覆盖样式传入 className |
import * as Icons from '@apitable/icons'; const names = Object.keys(Icons);
<ul className="icons-wrap" > { names.map((iconName) => { const Icon = Icons[iconName]; return <li className="icon-wrap" key={iconName}> <Icon size={60} /> <span className="icon-name">{iconName}</span> </li> }) } </ul>