Icon图标 - 图1

Icon 图标

基本用法

  1. import { Icon } from 'zarm';
  2. const ICONS = [
  3. 'add', 'add-round', 'add-round-fill',
  4. 'minus', 'minus-round', 'minus-round-fill',
  5. 'arrow-top', 'arrow-bottom', 'arrow-left', 'arrow-right',
  6. 'info-round', 'info-round-fill',
  7. 'warning-round', 'warning-round-fill',
  8. 'right', 'right-round', 'right-round-fill',
  9. 'wrong', 'wrong-round', 'wrong-round-fill',
  10. 'question-round', 'question-round-fill',
  11. 'required', 'broadcast', 'deletekey', 'keyboard', 'search', 'date', 'time',
  12. ];
  13. ReactDOM.render(
  14. <div className="grid">
  15. {ICONS.sort().map((iconType) => {
  16. return (
  17. <div className="grid-column" key={iconType}>
  18. <Icon type={iconType} theme="primary" size="lg" />
  19. <span>{iconType}</span>
  20. </div>);
  21. })}
  22. </div>
  23. , mountNode);

主题

  1. import { Icon } from 'zarm';
  2. ReactDOM.render(
  3. <div className="grid">
  4. <div className="grid-column">
  5. <Icon type="warning-round" theme="warning" />
  6. <span>warning</span>
  7. </div>
  8. <div className="grid-column">
  9. <Icon type="wrong-round" theme="danger" />
  10. <span>danger</span>
  11. </div>
  12. <div className="grid-column">
  13. <Icon type="info-round" style={{ color: '#1890ff' }}/>
  14. <span>custom color</span>
  15. </div>
  16. </div>
  17. , mountNode);

尺寸

  1. import { Icon } from 'zarm';
  2. ReactDOM.render(
  3. <div className="grid">
  4. <div className="grid-column">
  5. <Icon type="search" theme="primary" size="sm" />
  6. <span>sm</span>
  7. </div>
  8. <div className="grid-column">
  9. <Icon type="search" theme="primary" />
  10. <span>md</span>
  11. </div>
  12. <div className="grid-column">
  13. <Icon type="search" theme="primary" size="lg" />
  14. <span>lg</span>
  15. </div>
  16. </div>
  17. , mountNode)

自定义 Iconfont 图标

我们提供了一个 createFromIconfont 方法,方便开发者调用在 iconfont.cn 上自行管理的图标。

其本质上是组件在渲染前会自动引入 iconfont.cn 项目中的图标符号集,并且创建了一个 <use> 标签来渲染图标的组件。

详见 iconfont.cn 使用帮助 查看如何生成symbol代码的 js 地址。

  1. import { Icon } from 'zarm';
  2. const MyIcon = Icon.createFromIconfont('//at.alicdn.com/t/font_1340918_4p9b5skcr79.js'); // generated by iconfont.cn
  3. ReactDOM.render(
  4. <div className="grid">
  5. <div className="grid-column">
  6. <MyIcon type="home" theme="primary" />
  7. <span>home</span>
  8. </div>
  9. <div className="grid-column">
  10. <MyIcon type="user" theme="primary" />
  11. <span>user</span>
  12. </div>
  13. </div>
  14. , mountNode);

自定义 SVG 图标

可以通过配置 svgr 来将 svg 图标作为 React 组件导入。

本示例以 webpack 为参考,使用 @svgr/webpack 来实现,其他实现方式请参阅 svgr 文档

  1. // webpack.config.js
  2. {
  3. test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
  4. issuer: {
  5. test: /\.jsx?$/,
  6. },
  7. use: [
  8. {
  9. loader: 'babel-loader',
  10. },
  11. {
  12. loader: '@svgr/webpack',
  13. options: {
  14. babel: false,
  15. icon: true,
  16. },
  17. },
  18. ],
  19. },
  1. import { Icon } from 'zarm';
  2. import { ReactComponent as YourSvg } from 'path/to/yourSvg.svg'; // path to your '*.svg' file.
  3. ReactDOM.render(<Icon component={YourSvg} />, mountNode);

API

属性类型默认值说明
themestring'default'主题,可选值 defaultprimarysuccesswarningdanger
sizestring'md'大小,可选值 smmdlg
typestring-图标类型,可选值详见demo的基本用法
componentReact.ComponentType<React.SVGProps<SVGSVGElement>>-本地svg文件,需配合viewBox使用
viewBoxstring'0 0 32 32'自定义 SVG 图标时,用来设置画布的起始坐标及大小