import React, { HTMLAttributes, ReactElement, ReactNode } from 'react'; import './index.scss'; type VNode = ReactElement & { type: { name: string } }; export interface AvatarProps extends HTMLAttributes { size?: number; icon?: ReactNode; src?: string; children?: React.ReactNode; bgc?: string; } const Avatar: React.FC = (props) => { const { children, size, icon, src, bgc, ...rest } = props; const render = () => { return React.Children.map(children, (child: ReactNode) => { const vNode = child as VNode; if (vNode) { return React.cloneElement(vNode, { style: { width: `${size}px`, height: `${size}px`, verticalAlign: 'center' } }); } }); }; return (
{render()}
); }; Avatar.defaultProps = { size: 40, icon: '', src: '', bgc: '#cccccc', children: '' }; export default Avatar;