import React, { useState } from 'react'; import { Icon } from '../Icon'; interface SensitiveTextProps { className?: string; text: string; } export const SensitiveText: React.FC = React.memo( (props) => { const { className, text } = props; const [show, setShow] = useState(false); return (
{show ? text : getMaskedText(text)} setShow((before) => !before)} />
); } ); SensitiveText.displayName = 'SensitiveText'; function getMaskedText(text: string) { const len = text.length; if (len > 2) { return `${text[0]}****${text[len - 1]}`; } else if (len === 2) { return `${text[0]}*`; } else { return '**'; } }