You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

53 lines
1.6 KiB

---
order: 1
title:
zh-CN: 自定义图标
en-US: Custom Icon
---
## zh-CN
利用 `Icon` 提供的 `<CustomIcon />` 组件封装一个可复用的自定义图标。可以进一步通过 `component` 属性传入一个组件来修饰 `<svg/>` 标签,以满足特定的需求。
## en-US
Todo, Please replace me.
````jsx
import { Icon } from 'antd';
const CustomIcon = Icon.CustomIcon;
6 years ago
const StarIcon = (props) => {
return (
<CustomIcon {...props} viewBox="0 0 1024 1024">
<path d="M908.1 353.1l-253.9-36.9L540.7 86.1c-3.1-6.3-8.2-11.4-14.5-14.5-15.8-7.8-35-1.3-42.9 14.5L369.8 316.2l-253.9 36.9c-7 1-13.4 4.3-18.3 9.3-12.3 12.7-12.1 32.9 0.6 45.3l183.7 179.1-43.4 252.9c-1.2 6.9-0.1 14.1 3.2 20.3 8.2 15.6 27.6 21.7 43.2 13.4L512 754l227.1 119.4c6.2 3.3 13.4 4.4 20.3 3.2 17.4-3 29.1-19.5 26.1-36.9l-43.4-252.9 183.7-179.1c5-4.9 8.3-11.3 9.3-18.3 2.7-17.5-9.5-33.7-27-36.3zM664.8 561.6l36.1 210.3L512 672.7 323.1 772l36.1-210.3-152.8-149L417.6 382 512 190.7 606.4 382l211.2 30.7-152.8 148.9z" p-id="5827" />
</CustomIcon>
);
};
const CoolStarIcon = (props) => {
const component = (svgProps) => {
return (
<svg {...svgProps}>
<defs>
<linearGradient id="Gradient-1">
<stop offset="20%" stopColor="#39F" />
<stop offset="90%" stopColor="#F3F" />
</linearGradient>
</defs>
{React.cloneElement(svgProps.children, { fill: 'url(#Gradient-1)' })}
</svg>
6 years ago
);
};
return <StarIcon {...props} component={component} />;
};
ReactDOM.render(
<div>
<StarIcon />
<CoolStarIcon />
</div>,
mountNode
);
````