import React, { useState } from 'react'; import './ContactsSection.css'; function ContactsSection({ contacts }) { const [copiedType, setCopiedType] = useState(null); const handleCopy = (value, type) => { navigator.clipboard.writeText(value).then(() => { setCopiedType(type); setTimeout(() => setCopiedType(null), 2000); }); }; const getContactIcon = (type) => { const icons = { qq: '💬', email: '📧', github: '🐙', wechat: '💚', twitter: '🐦', linkedin: '💼' }; return icons[type] || '📱'; }; // 判断 icon 是否为 URL const isImageUrl = (icon) => { return icon && (icon.startsWith('http://') || icon.startsWith('https://')); }; // 渲染图标(支持 URL 和 Emoji) const renderIcon = (contact) => { const icon = contact.icon || getContactIcon(contact.type); if (isImageUrl(icon)) { return ( { e.target.style.display = 'none'; e.target.nextSibling.style.display = 'block'; }} /> ); } return {icon}; }; return ( 📮 联系方式 {contacts.map((contact, index) => ( {renderIcon(contact)} {contact.label} {contact.value} {contact.link && ( 🔗 )} handleCopy(contact.value, contact.type)} className="contact-button contact-copy" title="复制" > {copiedType === contact.type ? '✓' : '📋'} {copiedType === contact.type && ( 已复制! )} ))} ); } export default ContactsSection;
{contact.value}