import { Text, View, Image } from "@tarojs/components"; import Taro, { pxTransform, useEffect, useState } from "@tarojs/taro"; import { isNumber, generateId, classNames } from "../../lib"; import { BG_COLOR_LIST } from "../../lib/model"; import { IProps, THeaderArray } from "../../../@types/avatar"; function ClAvatar(props: IProps) { const [headList, setHeadList] = useState(props.headerArray); useEffect(() => { const list = props.headerArray || []; setHeadList( list.map((item: any) => { item.cu_avatar_id = generateId(); return item; }) ); }, [props.headerArray]); const onClick = () => { props.onClick && props.onClick(); }; const customSize = { small: 48, normal: 64, large: 96, xlarge: 128 }; const width = isNumber(props.size) ? pxTransform(props.size as number) : pxTransform(customSize[props.size || "normal"]); const height = isNumber(props.size) ? pxTransform(props.size as number) : pxTransform(customSize[props.size || "normal"]); const em = isNumber(props.size) ? (props.size as number) / 48 : customSize[props.size || "normal"] / 48; const avatarArray = (headList as THeaderArray[]).map( (item: any, index: number) => ( {item.text ? item.text.slice(0, 1) : ""} {item.tag ? ( ) : ( "" )} ) ); const avatarArrayComponent = ( { onClick(); }} > {avatarArray} ); return props.headerArray && props.headerArray.length > 1 ? ( avatarArrayComponent ) : ( { onClick(); }} > {avatarArray} ); } ClAvatar.options = { addGlobalClass: true }; ClAvatar.defaultProps = { size: "normal", shape: "radius", type: "normal", headerArray: [], shadow: true } as IProps; export default ClAvatar;